Langage C - var de type char

Résolu
kaham Messages postés 194 Statut Membre -  
kaham Messages postés 194 Statut Membre -
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?
A voir également:

5 réponses

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
Sacabouffe Messages postés 10427 Statut Membre 1 835
 
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
Utilisateur anonyme
 
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
kaham Messages postés 194 Statut Membre 5
 
C'est une partie du programme que je suis en train de développer, le reste est utilisé plus bas.^^
0
Utilisateur anonyme
 
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
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
Utilisateur anonyme > 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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kaham Messages postés 194 Statut Membre 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