Chaine de caracteres en C

Résolu
Bonjour;
j'ai un TP a faire sur les arbres de diagnostic, donc j'ai fais la déclaration comme suit:

typedef struct arbre
{
        char info[50];
        tree *gauche;
        tree *droit;
};


le problème est quand je fais la saisie des informations dans l'arbre, si j'utilise des mots ça marche très bien, mais si je mets une phrase du genre"est ce que vous êtes malade?" ça ne fonctionne pas, c'est comme si j'ai créé plusieurs noeuds le premier contient"est" le deuxième contient"ce" le troisième"que".....
mais moi je veux mettre toute la phrase dans un seul noeud.
est ce qu'il y a une solution pour ça?
Merci d'avance.

3 réponses

  1. Salut je pense que le problème est situé ailleurs ?

    Comment réalises tu l'opération de lecture et la sauvegarde dans ta chaîne info ?
    0
    1. D'après ce que j'ai lu sur les forums c'est un problème de "scanf", cette fonction ne prend pas en considération les espaces , mais je ne sais pas par quoi la remplacer ,j'ai essayé la fonction "gets" mais ça n'a pas marché.
      0
      1. effectivement scanf s'arrête aux espaces.

        Bon après je ne sais plus par quoi je remplacait ça... ah oui c'est fgets et pas gets ;)
        0
    2. je fais fgets(chaine)?? c'est juste ou non ??
      0
      1. Hum http://www.linux-kheops.com/doc/man/manfr/man-ascii-0.9/man3/fgets.3.txt.html

        fgets prend 3 paramètres !
        Par contre je pensais que fgets lisait dans un fichier !
        0
      2. Contributeur
        fgets lit dans un fichier en effet. Mais comme en C tout est fichier, il n'y a pas de problèmes.
        Le périphérique d'entrée est le flux stdin.

        Cdlt,
        0
      3. Contributeur
        Sinon, tu peux utiliser scanf : scanf("%49[^\n]",...);
        Mais, fgets est beaucoup plus pratique. Il ne faudra pas non plus oublier de vider le buffer et d'enlever le \n en trop de la chaîne.
        0