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
Bonjour,

donc voici mon programme C

#include <stdio.h>
#include <stdlib.h>

int main()
{

char reponse[3];

printf("peux tu me signer mon mot ? ");
scanf("%s", reponse);
fflush(stdin);


if (reponse == oui)
{
printf("merci !");

}

else if(reponse != oui)
{
printf("pourquoi !");

}



return 0;
}



alors il me dit que j'ai un problème au if.
Car mon résultat final doit être si la personne marque oui alors affiche merci sinon affiche pourquoi.

merci de votre réponse et pour se qui se pose la question de cela fflush(stdin); en faite c'est pour que l'ordi garde la donnée que la personne à marqué pour après.

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
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,
2
merci pour ta réponse qui à réussi a régler tous mes problème
0
juste une question pourquoi mettre egal 0 au if
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
29 mars 2015 à 17:43
Car ça renvoie 0 en cas d'égalité.. Pour plus de précision, tu peux consulter le man.
0
merci infiniment
0
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
Les chaînes de caractères se comparent avec
strcmp (et ses variations)
man 3 strcmp
1
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
le oui doit etre entre apostrophes => 'oui'
paske reponse est un tableau de caracteres
-2
merci mais maintenant j'ai un nouveau problème c'est que quand je lance mon programme si j'écris oui le programme m'écris pourquoi au lieu de merci.
0
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
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()
0