Problème en c (conditions)
Résolu/Fermé
kuremento
Messages postés
1
Date d'inscription
jeudi 26 mars 2015
Statut
Membre
Dernière intervention
26 mars 2015
-
26 mars 2015 à 18:35
kuremento - 30 mars 2015 à 19:46
kuremento - 30 mars 2015 à 19:46
A voir également:
- Problème en c (conditions)
- Mise en forme conditionnelle excel plusieurs conditions - Guide
- Votre compte a été désactivé pour violation de nos conditions d’utilisation - Guide
- Excel reporter des données sur une autre feuille avec conditions ✓ - Forum Excel
- Je ne suis pas un robot confidentialité - conditions ✓ - Forum Windows 8 / 8.1
- Transposer des lignes sur une autre feuille sous condition ✓ - Forum Excel
3 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
27 mars 2015 à 21:13
27 mars 2015 à 21:13
Bonjour,
Plusieurs problèmes :
char reponse[3];
Ce n'est pas assez grand pour stocker le mot "oui". Il faut au minimum : char reponse[4];
scanf("%s", reponse);
Ce n'est pas une erreur, mais je te conseille de mettre : scanf("%3s", reponse);
fflush(stdin)
Ce n'est pas correct. Cela provoque un comportement indéterminé. Si tu veux vider le buffer clavier, il faut faire une boucle while() sur getchar(). Si tu veux garder ça dans le buffer clavier, il suffit de retirer fflush(stdin);
if (reponse == oui)
On utilise des guillemets pour parler de la chaîne "oui". De plus pour comparer des chaînes, on utilise la fonction strcmp() ou strncmp().
Par exemple :
<code c>if (strcmp(reponse, "oui")==0) {
puts("egalite");
}
else if(reponse != oui)
Même erreur que précédemment. Mais là tu n'as pas besoin de préciser la condition. Il te suffit de mettre simplement : else
Et enfin juste avant ton return 0; je te conseille d'afficher un '\n' pour forcer l'affichage des mots. Par exemple : putchar('\n');
Cdlt,
Plusieurs problèmes :
char reponse[3];
Ce n'est pas assez grand pour stocker le mot "oui". Il faut au minimum : char reponse[4];
scanf("%s", reponse);
Ce n'est pas une erreur, mais je te conseille de mettre : scanf("%3s", reponse);
fflush(stdin)
Ce n'est pas correct. Cela provoque un comportement indéterminé. Si tu veux vider le buffer clavier, il faut faire une boucle while() sur getchar(). Si tu veux garder ça dans le buffer clavier, il suffit de retirer fflush(stdin);
if (reponse == oui)
On utilise des guillemets pour parler de la chaîne "oui". De plus pour comparer des chaînes, on utilise la fonction strcmp() ou strncmp().
Par exemple :
<code c>if (strcmp(reponse, "oui")==0) {
puts("egalite");
}
else if(reponse != oui)
Même erreur que précédemment. Mais là tu n'as pas besoin de préciser la condition. Il te suffit de mettre simplement : else
Et enfin juste avant ton return 0; je te conseille d'afficher un '\n' pour forcer l'affichage des mots. Par exemple : putchar('\n');
Cdlt,
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
27 mars 2015 à 16:25
27 mars 2015 à 16:25
Les chaînes de caractères se comparent avec
strcmp (et ses variations)
man 3 strcmp
strcmp (et ses variations)
man 3 strcmp
narra_blues
Messages postés
3
Date d'inscription
dimanche 22 mars 2015
Statut
Membre
Dernière intervention
27 mars 2015
27 mars 2015 à 13:11
27 mars 2015 à 13:11
le oui doit etre entre apostrophes => 'oui'
paske reponse est un tableau de caracteres
paske reponse est un tableau de caracteres
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
27 mars 2015 à 21:05
27 mars 2015 à 21:05
Les apostrophes, c'est pour les caractères pas pour les chaînes. De plus, pour comparer des chaînes on n'utilise pas l'opérateur égal mais str(n)cmp()
28 mars 2015 à 09:32
29 mars 2015 à 09:21
29 mars 2015 à 17:43
30 mars 2015 à 19:46