Chaine de caracteres en C

Résolu
Mileys Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
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.

A voir également:

3 réponses

Kuku007 Messages postés 183 Date d'inscription   Statut Membre Dernière intervention   23
 
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
Mileys Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
 
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
aurelbo Messages postés 548 Date d'inscription   Statut Membre Dernière intervention   82
 
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
Mileys Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
 
je fais fgets(chaine)?? c'est juste ou non ??
0
Kuku007 Messages postés 183 Date d'inscription   Statut Membre Dernière intervention   23
 
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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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