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

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
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 :
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+
0
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
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
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:25
Ça ne marche toujours pas, il me met à chaque fois "Tampis pour toi...".
Même si je mets "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:31
J'ai apporté les modifications :
#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...
0

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
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
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:34
Je le mets quoi, j'ai pas compris (je suis vraiment nul)?
0
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
if(strcmp(ouiounon,"oui")==0)
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
Ok!!!!!
ça marche, merci beaucoup!!!
0
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
De rien ;)
0
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 ( .........);
0
#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");
}
0
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
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
0