Langage C - var de type char

Résolu
Bonjour,

je début en langage C et je suis face à un souci avec une var de type char. Je vous explique mon problème :

Voici mon code :
int main(int argc, char *argv[])
{
    //=========================
    //declaration des variables
    //=========================
    char gout, fruit;

    //Starter menu
    scanf("%c", &gout);
    printf("\nvotre gout prefere est : %c", gout);

    return 0;
}


Quand je compile ce code j'ai:
fraise
votre gout prefere est : f


La console ne veux pas m'afficher le mot fraise complètement. J'ai chercher des tutos pour voir si la commande "%c" fais bien appel aux variables de type char mais sans résultat.

Pouvez-vous m'aider?
Configuration: Windows XP
Firefox 2.0.0.12

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour

    Pas la peine d'essayer le programme de Shadow
    Le type string n'existe pas en C standard. Même pas en faisant include <string.h>
    de plus, un scanf ("%ld",&gout) pour lire un string alors que %ld est fait pour lire les entiers longs...

    #includes <stdio.h>
     int main(int argc, char *argv[])
    {
        //=========================
        //declaration des variables
        //=========================
        char gout[100];
    
        //Starter menu
        gets( gout);
        printf("\nvotre gout prefere est : %s", gout);
    
        return 0;
    }
    


    remarque que :
    - gout est un tableau ([100]) de caractères, et non pas un seul caractère
    - on utilise gets plutôt que scanf("%s"..) pour lire gout, parce que scanf s'arrête au premier séparateur (espace, fin de ligne..) rencontré . Si on tape "citron vert", gets lira "citron vert" alors que scanf ne lira que "citron"
    1. Salut
      scanf("%s", &gout);
      printf("\nvotre gout prefere est : %s", gout);
      

      %c c'est pour un seul caractère.
      T'as cherché? Ben t'as pas dû chercher beaucoup... scanf Wikipedia
      A plus
      1. Salut, essaye avec les valeurs types "string"
        ça donne ça:
        #include <string.h>
        int main(int argc, char *argv[])
        {
            //=========================
            //declaration des variables
            //=========================
            string gout;
        
            //Starter menu
            scanf("%ld", &gout);
            printf("\nvotre gout prefere est : %ld", gout);
            printf("\n\n"); // sauter des lignes
            system("pause"); // attendre que l'utilisateur appuie sur une touche
            return 0;
        }
        

        Mais tu n'utilises pas "fruit". Pourquoi l'as-tu définie?

        A+
        1. C'est une partie du programme que je suis en train de développer, le reste est utilisé plus bas.^^
      2. Salut, le père.
        Je l'ai fait en C++ ça marche très bien hors mis les espaces :
        #include <cstdlib>
        #include <iostream>
        
        using namespace std;
        //=============
        //déclaration des strings
        //=============
        string gout;
        
        int main(int argc, char *argv[])
        {
        
            //Starter menu
            system("TITLE Fruit");
            cin >> gout;
            cout << "Votre gout prefere est: " << gout << ".\n\n";
            system("pause");
            return EXIT_SUCCESS;
        }
        

        Il peut bien faire un projet en C++.
        1. Bonjour,

          Euh bah... non.

          Déjà cela ne respecte pas ses objectifs à savoir découvrir le C. Aussi cela ne sert vraiment à rien de le faire en C++ si on est seulement en train d'apprendre ce qu'est un char * en C.

          Et je me permettrais d'ajouter que ton programme n'est pas standard.

          La réponse précédente me parait donc plus adéquate à savoir qu'une chaîne de caractère est une suite de caractères généralement terminée par le caractère '\0'.

          CCM : Les strings en C
          (Informations plutôt incomplètes... ne parle même pas du "bonjour")

          M.
        2. @MahmahMais oui bien sûr...

          J'ai dit que mon code marchait en C, parce que je croyais que ce langage supportait les strings. (je me suis trompé, ça arrive à tout le monde)

          mais j'ai remarqué qu'il marchait en C++ alors j'ai mis le code en C++
          tu comprends
      3. Merci a tous de vos réponses! Je vais utiliser la fonction "gets" qui me paret être la meilleur solution.

        Edit:
        ===

        Voila le c'est fais et sa marche a merveille. Un grand Merci