Posez votre question Signaler

Pb chaine de caractères ds liste chainée en C

cyberlulu - Dernière réponse le 30 déc. 2004 à 17:03
Bonjour
comment faire pour copier une chaine de caractère dans la valeur d'un élément d'une liste chainée ? j'ai utilisé strcpy mais j'ai un pb quand je rentre plus de 4 caractères : il ne m'en affiche que 4 !
voilà mon code :

typedef struct elem {char valeur;
                    struct elem * suivant;
                    } element;

typedef element * liste;
liste l=NULL;
main()
{ char nb[]="1515695";

  l=(element*)malloc(sizeof(element));
  strcpy(&l->valeur,nb);
  l->suivant=NULL;

  printf("%s",nb);
  printf("\n%s",&l->valeur);

  getch();
  return 0;
}

si on essaye ce code, l'affichage de l->valeur donnera "1515"
si qqun peut m'aider... merci d'avance
Lire la suite 

Pb chaine de caractères ds liste chainée en C »

6 réponses
Réponse
+0
moins plus
Bonjour!

Euh, tu copies une chaine de caractère dans UN caractère? C'est de là d'où vient le problème!

typedef struct elem {char * valeur;
                    struct elem * suivant;
                    } element;


et après:

l=(element*)malloc(sizeof(element));
 l = (char*) malloc (sizeof(nb));
  strcpy(&l->valeur,nb);
  l->suivant=NULL;





Maily :-))))
ragondin, va au coin!
maily- 30 déc. 2004 à 16:26
Pardon, je me suis trompée:

l->valeur=(char*)malloc(sizeof(nb))

En fait, là, tu donnes à ta valeur, la taille de ton tableau!

Le char * veut dire que tu crée un pointeur sur un caractère! En faisant un malloc derrière de la taille de ton nb, par exemple, c'est comme si tu créais un tableau de caractères! Sauf que c'est dynamique...

Si tu ne mets pas char * valeur, et bien, cela veut dire que quoiqu'il se passe, ta valeur sera toujours un seul caractère. Un char * valeur permet de dire que ça peut être un ou plusieurs caractères...
En fait, regarde un cour sur les chaines de caractères en c, tu comprendras mieux parce que je ne pense pas bien l'expliquer! :( désolée...

Maily :-))))
ragondin, va au coin!
cyberlulu - 30 déc. 2004 à 16:37
si si j'ai bien compris ! c'était juste le fait de mettre deux fois l=...malloc... mais vu que le deuxième c'est l->valeur=... c'est bon. merci pour les explications !
mailymaily - 30 déc. 2004 à 17:03
:-D
De rien!

Maily :-))))
ragondin, va au coin!
Ajouter un commentaire
Ce document intitulé « pb chaine de caractères ds liste chainée en C » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?