Problème avec le langage c.
Résolu
Simker
Messages postés
163
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
j'ai un problème tout bête, regardez mon code :
Et il ne fait pas comme je veux...
snif
j'ai un problème tout bête, regardez mon code :
#include <stdio.h> #include <stdlib.h> main() { char ouiounon; printf("Salut!\n"); printf("\a"); sleep(1000); printf("Tu vas bien???!!!\n"); printf("\a"); scanf("%d", &ouiounon); if (ouiounon=="oui") { printf ("Ok c'est cool!!!\n"); } else { printf("Tanpis pour toi...\n"); } system("PAUSE"); }
Et il ne fait pas comme je veux...
snif
A voir également:
- Problème avec le langage c.
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage visual basic - Télécharger - Langages
- Langage basic gratuit - Télécharger - Édition & Programmation
11 réponses
Bonjour,
je n'ai que survolé ton code mais je vois déjà un problème à la déclaration de la variable "ouiounon", elle doit contenir un tableau de char et non pas un seul char puisque tu veux afficher trois caractère : "oui". Donc il faut que tu déclares ta variable comme ceci :
mais je te conseil de réserver plus de trois cases car si tu entres plus de trois caractères tu risques de faire planter des programmes (c'est la faiblesse de scanf).
Ensuite tu doit aussi modifier l'opérateur "%d" en "%s" puisque tu veux afficher une chaine de caractère.
voilà essai de modifier ça et dit moi si ça marche.
A+
je n'ai que survolé ton code mais je vois déjà un problème à la déclaration de la variable "ouiounon", elle doit contenir un tableau de char et non pas un seul char puisque tu veux afficher trois caractère : "oui". Donc il faut que tu déclares ta variable comme ceci :
char ouiounon[3];
mais je te conseil de réserver plus de trois cases car si tu entres plus de trois caractères tu risques de faire planter des programmes (c'est la faiblesse de scanf).
Ensuite tu doit aussi modifier l'opérateur "%d" en "%s" puisque tu veux afficher une chaine de caractère.
voilà essai de modifier ça et dit moi si ça marche.
A+
Salut,
Comme linksys23 le dit, il y a une erreur au niveau de la variable ouiounon. Mais il ne faut pas oublier le \0 final.
Donc la déclaration est : char ouiounon[4];
Ensuite, c'est scanf("%s",ouiounon); (Il n'y a pas de &).
Attention, ce n'est pas conseillé d'utiliser scanf pour les chaines de caractères. C'est mieux d'utiliser fgets.
Et enfin pour comparer, il faut utiliser strcmp(ouiounon,"oui"), et non ouiounon=="oui"
Cdt
Comme linksys23 le dit, il y a une erreur au niveau de la variable ouiounon. Mais il ne faut pas oublier le \0 final.
Donc la déclaration est : char ouiounon[4];
Ensuite, c'est scanf("%s",ouiounon); (Il n'y a pas de &).
Attention, ce n'est pas conseillé d'utiliser scanf pour les chaines de caractères. C'est mieux d'utiliser fgets.
Et enfin pour comparer, il faut utiliser strcmp(ouiounon,"oui"), et non ouiounon=="oui"
Cdt
J'ai apporté les modifications :
Mais ça fait l'inverse de se que je veux faire snif...
#include <stdio.h> #include <stdlib.h> main() { char ouiounon[4]; printf("Salut!\n"); printf("\a"); sleep(1000); printf("Tu vas bien???!!!\n"); printf("\a"); scanf("%s", ouiounon); if (strcmp(ouiounon,"oui")) { printf ("Ok c'est cool!!!\n"); } else { printf("Tampis pour toi...\n"); } system("PAUSE"); }
Mais ça fait l'inverse de se que je veux faire snif...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Normal, strcmp retourne 0 quand il y a égalité des chaines. Donc il faut faire if (strcmp... ==0).
Et n'oublie pas d'inclure string.h
D'ailleurs stdlib.h tu en as pas besoin dans ton programme.
Cdt
Et n'oublie pas d'inclure string.h
D'ailleurs stdlib.h tu en as pas besoin dans ton programme.
Cdt
Bonjour
la ligne suivante : if (ouiounon=="oui") est incorrecte parceque tu testes un caractere avec une chaine de
caracteres.
il faudrait definir ouiounon comme une string.
string ouiounon ="";
int i = strcmp(ouiounon,"oui)"; /* tu test es avec la fonction strcmp qui fournit comme reponse */
/* 0 en cas degalite,-1 en cas d`inferiorite et un nomre positif */
/* en cas de supperiorite */
if (i==0) then ...
( ...)
else ( .........);
la ligne suivante : if (ouiounon=="oui") est incorrecte parceque tu testes un caractere avec une chaine de
caracteres.
il faudrait definir ouiounon comme une string.
string ouiounon ="";
int i = strcmp(ouiounon,"oui)"; /* tu test es avec la fonction strcmp qui fournit comme reponse */
/* 0 en cas degalite,-1 en cas d`inferiorite et un nomre positif */
/* en cas de supperiorite */
if (i==0) then ...
( ...)
else ( .........);
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{
string ouiounon="";
printf("Salut!\n");
printf("\a");
sleep(1000);
printf("Tu vas bien???!!!\n");
printf("\a");
scanf("%s", ouiounon);
if (strcmp(ouiounon,"oui")==0)
{
printf ("Ok c'est cool!!!\n");
}
else
{
printf("Tant pis pour toi...\n");
}
system("PAUSE");
}
#include <stdlib.h>
#include <string.h>
main()
{
string ouiounon="";
printf("Salut!\n");
printf("\a");
sleep(1000);
printf("Tu vas bien???!!!\n");
printf("\a");
scanf("%s", ouiounon);
if (strcmp(ouiounon,"oui")==0)
{
printf ("Ok c'est cool!!!\n");
}
else
{
printf("Tant pis pour toi...\n");
}
system("PAUSE");
}