Langage C - var de type char

Résolu
kaham Messages postés 174 Date d'inscription   Statut Membre Dernière intervention   -  
kaham Messages postés 174 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. le père
     
    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"
    2
  2. Sacabouffe Messages postés 9427 Date d'inscription   Statut Membre Dernière intervention   1 863
     
    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
    0
  3. -Shadow-
     
    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+
    0
    1. kaham Messages postés 174 Date d'inscription   Statut Membre Dernière intervention   5
       
      C'est une partie du programme que je suis en train de développer, le reste est utilisé plus bas.^^
      0
  4. -Shadow-
     
    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++.
    0
    1. Mahmah Messages postés 497 Statut Membre 125
       
      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.
      0
      1. -Shadow- > Mahmah Messages postés 497 Statut Membre
         
        Mais 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
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. kaham Messages postés 174 Date d'inscription   Statut Membre Dernière intervention   5
     
    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
    0