Langage C - var de type char

Résolu/Fermé
kaham Messages postés 177 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 1 mars 2013 - 22 mars 2008 à 00:56
kaham Messages postés 177 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 1 mars 2013 - 22 mars 2008 à 13:26
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?

5 réponses

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 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 1 832
22 mars 2008 à 01:04
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
22 mars 2008 à 01:06
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 177 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 1 mars 2013 5
22 mars 2008 à 13:26
C'est une partie du programme que je suis en train de développer, le reste est utilisé plus bas.^^
0
Utilisateur anonyme
22 mars 2008 à 11:37
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 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 125
22 mars 2008 à 11:47
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 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010
22 mars 2008 à 12:09
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 177 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 1 mars 2013 5
22 mars 2008 à 13:25
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