Problème avec le langage c.
Résolu/Fermé
Simker
Messages postés
161
Date d'inscription
vendredi 25 avril 2008
Statut
Membre
Dernière intervention
2 juillet 2009
-
24 août 2008 à 21:00
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 25 août 2008 à 09:59
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 25 août 2008 à 09:59
A voir également:
- Problème avec le langage c.
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage pascal - Télécharger - Édition & Programmation
- Dev-Pascal - Télécharger - Édition & Programmation
11 réponses
linksys23
Messages postés
133
Date d'inscription
samedi 16 février 2008
Statut
Membre
Dernière intervention
30 décembre 2010
27
24 août 2008 à 21:15
24 août 2008 à 21:15
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+
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
24 août 2008 à 21:25
24 août 2008 à 21:25
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
Simker
Messages postés
161
Date d'inscription
vendredi 25 avril 2008
Statut
Membre
Dernière intervention
2 juillet 2009
122
24 août 2008 à 21:25
24 août 2008 à 21:25
Ça ne marche toujours pas, il me met à chaque fois "Tampis pour toi...".
Même si je mets "oui".
Même si je mets "oui".
Simker
Messages postés
161
Date d'inscription
vendredi 25 avril 2008
Statut
Membre
Dernière intervention
2 juillet 2009
122
24 août 2008 à 21:31
24 août 2008 à 21:31
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
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
24 août 2008 à 21:32
24 août 2008 à 21:32
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
Simker
Messages postés
161
Date d'inscription
vendredi 25 avril 2008
Statut
Membre
Dernière intervention
2 juillet 2009
122
24 août 2008 à 21:34
24 août 2008 à 21:34
Je le mets quoi, j'ai pas compris (je suis vraiment nul)?
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
24 août 2008 à 21:36
24 août 2008 à 21:36
if(strcmp(ouiounon,"oui")==0)
Simker
Messages postés
161
Date d'inscription
vendredi 25 avril 2008
Statut
Membre
Dernière intervention
2 juillet 2009
122
24 août 2008 à 21:38
24 août 2008 à 21:38
Ok!!!!!
ça marche, merci beaucoup!!!
ça marche, merci beaucoup!!!
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
24 août 2008 à 21:42
24 août 2008 à 21:42
De rien ;)
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");
}
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
25 août 2008 à 09:59
25 août 2008 à 09:59
Salut,
Son problème est déjà résolu ;)
Sinon, concernant ton code :
En C, on utilise char* ou char[] mais pas string et, on n'utilise pas scanf("%s",...) à cause des problèmes de sécurité.
Cdt
Son problème est déjà résolu ;)
Sinon, concernant ton code :
En C, on utilise char* ou char[] mais pas string et, on n'utilise pas scanf("%s",...) à cause des problèmes de sécurité.
Cdt