Probleme avec des if, if else et else
Résolu/Fermé
Wolfye
Messages postés
22
Date d'inscription
vendredi 3 août 2012
Statut
Membre
Dernière intervention
7 juillet 2013
-
7 juil. 2013 à 12:47
arthurg95 Messages postés 2421 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 4 juin 2014 - 7 juil. 2013 à 21:14
arthurg95 Messages postés 2421 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 4 juin 2014 - 7 juil. 2013 à 21:14
A voir également:
- Probleme avec des if, if else et else
- Vba if not ✓ - Forum Excel
- If exist - Forum Programmation
- Date if en francais excel - Forum Programmation
- Bios has been reset please reconfigure a bios setup items if needed - Forum BIOS
- Else without a previous if - Forum C
2 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
7 juil. 2013 à 13:29
7 juil. 2013 à 13:29
Bonjour,
Alors tout d'abord, deux choses :
1 : merci de faire usage de plus de politesse pour la prochaine fois. Le "Bonjour" placé automatiquement est justement fait pour le rappeler. Pas pour l'enlever...
2 : la prochaine fois, merci d'utiliser les balises "code" <> lorsque tu postes un code (à droite du bouton souligné).
Sinon, effectivement, la comparaison de chaîne en C, se fait avec strcmp().
if ( text == "Hello" ) { /* ici j'ai donc enlevé le ';' apres la parenthese pour que le else if remarque le if, mais du fait le if n'ai même plus verifié... */
printf("it works !\n");
}
Si tu mets un ; le if sera effectué ! Mais, l'instruction suivante ne sera pas conditionnée par le if. D'ailleurs, c'est une erreur de mettre un ; après un if. Autant le mettre en commentaire...
De plus, scanf("%s",...); c'est très dangereux. Mets plutôt : scanf("%9s", text);
Et enfin, un main() se termine par return 0;.
Ce qui donne :
Alors tout d'abord, deux choses :
1 : merci de faire usage de plus de politesse pour la prochaine fois. Le "Bonjour" placé automatiquement est justement fait pour le rappeler. Pas pour l'enlever...
2 : la prochaine fois, merci d'utiliser les balises "code" <> lorsque tu postes un code (à droite du bouton souligné).
Sinon, effectivement, la comparaison de chaîne en C, se fait avec strcmp().
if ( text == "Hello" ) { /* ici j'ai donc enlevé le ';' apres la parenthese pour que le else if remarque le if, mais du fait le if n'ai même plus verifié... */
printf("it works !\n");
}
Si tu mets un ; le if sera effectué ! Mais, l'instruction suivante ne sera pas conditionnée par le if. D'ailleurs, c'est une erreur de mettre un ; après un if. Autant le mettre en commentaire...
De plus, scanf("%s",...); c'est très dangereux. Mets plutôt : scanf("%9s", text);
Et enfin, un main() se termine par return 0;.
Ce qui donne :
#include <stdio.h> #include <string.h> int main(void) { char text[10]; printf( "Write some text\n" ); scanf( "%9s", text ); if (strcmp(text, "Hello") == 0) { printf("it works !\n"); } else if (strcmp(text, "Bye") == 0 ) { printf("works with else if"); } else { printf( "Failed !!\n" ); } printf("this is your text : %s \n", text); return 0; }
arthurg95
Messages postés
2421
Date d'inscription
dimanche 24 février 2008
Statut
Membre
Dernière intervention
4 juin 2014
341
7 juil. 2013 à 12:55
7 juil. 2013 à 12:55
Ajoute #include <string.h>
et la comparaison de caratère se fait rarement comme ça, on utilise plutôt des fonction de comparaison (et ce dans beaucoup de langage ;))
essaye plutôt strcmp(text, "Hello") à la place de if (text == "Hello")
Et le mieux pour vérifier ton problème est d'utiliser un débogueur, en ligne de commande c'est chiant, mais avec un bon IDE c'est assez simple ;)
et la comparaison de caratère se fait rarement comme ça, on utilise plutôt des fonction de comparaison (et ce dans beaucoup de langage ;))
essaye plutôt strcmp(text, "Hello") à la place de if (text == "Hello")
Et le mieux pour vérifier ton problème est d'utiliser un débogueur, en ligne de commande c'est chiant, mais avec un bon IDE c'est assez simple ;)
Wolfye
Messages postés
22
Date d'inscription
vendredi 3 août 2012
Statut
Membre
Dernière intervention
7 juillet 2013
7 juil. 2013 à 13:01
7 juil. 2013 à 13:01
D'accord, je vais essayer ^^
Wolfye
Messages postés
22
Date d'inscription
vendredi 3 août 2012
Statut
Membre
Dernière intervention
7 juillet 2013
7 juil. 2013 à 13:05
7 juil. 2013 à 13:05
Alors, ça ne marche toujours pas...
Et j'avais oublié de préciser mais mon debugueur ne remarque pas d'erreur
Et j'avais oublié de préciser mais mon debugueur ne remarque pas d'erreur
arthurg95
Messages postés
2421
Date d'inscription
dimanche 24 février 2008
Statut
Membre
Dernière intervention
4 juin 2014
341
7 juil. 2013 à 14:24
7 juil. 2013 à 14:24
Le débogueur n'est pas pour détecter les erreur, c'est le compilateur qui s'en charge ça, mais les vérifications de GCC sont assez limitées...
Il sert à suivre pas à pas les instructions, ainsi que l'état des variables ;)
Il sert à suivre pas à pas les instructions, ainsi que l'état des variables ;)
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
Modifié par fiddy le 7/07/2013 à 14:35
Modifié par fiddy le 7/07/2013 à 14:35
mais les vérifications de GCC sont assez limitées...
Peux-tu préciser ?
Peux-tu préciser ?
Wolfye
Messages postés
22
Date d'inscription
vendredi 3 août 2012
Statut
Membre
Dernière intervention
7 juillet 2013
7 juil. 2013 à 17:13
7 juil. 2013 à 17:13
merci, mais c'est bon, j'ai eu ma réponse la :)
7 juil. 2013 à 13:46
Et je suis sincerement désolé d'avoir paru impoli mais je n'avais pas remarqué de bonjour automatique quand j'ai écrit m'a question. Et je suis désolé aussi d'avoir oublié les balises "code".
Pour le reste, merci de vos conseils, et si vous aviez le courage, pourriez vous m'expliquer quelle différence fait le 9 dans %9s ?
7 juil. 2013 à 13:51
quelle différence fait le 9 dans %9s ?
Cela limitera la saisie à 9 caractères dans ta chaîne (+1 pour le caractère '\0' final), soit la taille de ton tableau.
Sans ça, si l'utilisateur entrait une chaîne de 15 caractères, tu risquerais de faire planter le programme. Tu peux essayer pour bien comprendre l'intérêt du 9 :-).
7 juil. 2013 à 14:12
Et encore une fois, merci beaucoup ^^