Chaine de caracteres en C

Résolu/Fermé
Mileys Messages postés 26 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 15 mars 2015 - 30 avril 2010 à 17:53
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 1 mai 2010 à 00:25
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 dimanche 28 février 2010 Statut Membre Dernière intervention 7 septembre 2011 23
30 avril 2010 à 18:22
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 vendredi 24 octobre 2008 Statut Membre Dernière intervention 15 mars 2015
30 avril 2010 à 18:31
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 mercredi 21 avril 2010 Statut Membre Dernière intervention 28 avril 2018 82
30 avril 2010 à 18:46
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 vendredi 24 octobre 2008 Statut Membre Dernière intervention 15 mars 2015
30 avril 2010 à 18:54
je fais fgets(chaine)?? c'est juste ou non ??
0
Kuku007 Messages postés 183 Date d'inscription dimanche 28 février 2010 Statut Membre Dernière intervention 7 septembre 2011 23
30 avril 2010 à 19:39
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
1 mai 2010 à 00:16
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
1 mai 2010 à 00:25
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