Problème avec le langage c.

Résolu
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
--
Si l'ennui était mortel, alors les profs seraient des assassins - Inconnu
Configuration: Windows XP
Firefox 3.0.1

11 réponses

  1. 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
    1. Contributeur
      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
      1. Ça ne marche toujours pas, il me met à chaque fois "Tampis pour toi...".
        Même si je mets "oui".
        0
        1. 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
          1. Contributeur
            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
            1. Je le mets quoi, j'ai pas compris (je suis vraiment nul)?
              0
              1. Contributeur
                if(strcmp(ouiounon,"oui")==0)
                0
                1. Ok!!!!!
                  ça marche, merci beaucoup!!!
                  0
                  1. 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
                    1. #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
                      1. Contributeur
                        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