Problème en c (conditions)
Résolu
kuremento
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
kuremento -
kuremento -
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.
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.
A voir également:
- Problème en c (conditions)
- Mise en forme conditionnelle excel plusieurs conditions - Guide
- Je ne suis pas un robot confidentialité - conditions ✓ - Forum Mail
- Comment débloquer "je ne suis pas un robot" ✓ - Forum Windows 8 / 8.1
- Libreoffice calc si plusieurs conditions ✓ - Forum LibreOffice / OpenOffice
- Google sheet mise en forme conditionnelle 2 conditions ✓ - Forum Bureautique
3 réponses
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,
kuremento
merci pour ta réponse qui à réussi a régler tous mes problème
kuremento
juste une question pourquoi mettre egal 0 au if
fiddy
Messages postés
11069
Date d'inscription
Statut
Contributeur
Dernière intervention
1 846
Car ça renvoie 0 en cas d'égalité.. Pour plus de précision, tu peux consulter le man.
kuremento
merci infiniment