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
- Je ne suis pas un robot recaptcha confidentialité - conditions - Forum Facebook
- Désolé. vous ne pouvez pas accéder à cet élément, car il ne respecte pas nos conditions d'utilisation. ✓ - Forum Cloud
- Excel reporter des données sur une autre feuille avec conditions ✓ - Forum Excel
- Index equiv 2 conditions - 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 836
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 836
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