Flux rss
Rechercher : dans
Par : Mots clés Nom d'utilisateur
Messages sans réponse

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

cyberlulu, le jeudi 30 décembre 2004 à 15:41:24 
 Signaler ce message aux modérateurs

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

1

maily, le jeudi 30 décembre 2004 à 15:47:09

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!

Répondre à maily

2

cyberlulu, le jeudi 30 décembre 2004 à 15:55:40

Euh... ben ouais ca marche plutot bien !!
mais je ne comprends pas trop pourquoi il faut faire comme ca...
déjà, pourquoi il faut mettre

typedef struct elem {char * valeur;
ca veut dire que le champ valeur est un pointeur sur un caractère ?? pourtant la valeur c'est un caractère, nan ?

et puis
l = (char*) malloc (sizeof(nb));
pourquoi on fait ca si on a déjà mis
l=(element*)malloc(sizeof(element));
. comment ca se fait que l'on fait deux fois malloc et qu'on enregistre dans l ?

Répondre à cyberlulu

3

cyberlulu, le jeudi 30 décembre 2004 à 16:10:36

Ah oui, autre chose encore. on ne peut pas mettre dans le champ valeur une chaine de caractère ?? est-ce que c'est pour ca que tu mets char * valeur ?

Répondre à cyberlulu

4

maily, le jeudi 30 décembre 2004 à 16:26:41

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!

Répondre à maily

5

cyberlulu, le jeudi 30 décembre 2004 à 16:37:41

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 !

Répondre à cyberlulu

6

 maily, le jeudi 30 décembre 2004 à 17:03:51

:-D
De rien!

Maily :-))))
ragondin, va au coin!

Répondre à maily
Chaines de caractère(Langage C) Bonjour, s'il vous plait comment peut on ecrire un partie de programme qui insère le caractère 's' au début d'une chaine dde caractère dans le langage C www.commentcamarche.net/forum/affich-8939341-chaines-de-caractere-langage-c
Chaîne de caractere avec des espaces ( C ) Bonjour, J aimerais savoir comme est ce que je pourrais faire attribuer une chaîne de caractère avec des espaces a un Tableau merci de bien vouloir m aider et afficher le résultat et biensur pas au moment d écrire le code source mais lorsque je suis... www.commentcamarche.net/forum/affich-11288040-chaine-de-caractere-avec-des-espaces-c
Liste chainée c++ (Résolu) Bonjour, Voici Une fonction c++ qui permet de supprimer le premier element d'une liste appeler element: void supprimer(element *&debut) //Le probleme c'est pourquoi *& { element *courant; if(debut==0) cout www.commentcamarche.net/forum/affich-4225174-liste-chainee-c
Liste doublement chaînéeLISTES DOUBLEMENT CHAINÉES Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la liste IV. Opérations sur les listes doublement chaînées A. Initialisation B. Insertion d'un élément dans la... www.commentcamarche.net/faq/sujet-7636-liste-doublement-chainee
Utiliser des accents et autres caractères spéciauxDans la plupart des langages de programmation, on ne peut utiliser directement les accents et autres caractères non-anglosaxon. La solution est l'unicode, une sorte de code universel. Par exemple pour afficher la chaine de caractères : " là, ça... www.commentcamarche.net/faq/sujet-188-utiliser-des-accents-et-autres-caracteres-speciaux
Introduction à la STL en C++ (standard template library)Introduction Principales classes de la STL std::pair std::list std::vector std::set std::map Les iterators iterator et const_iterator reverse_iterator et const_reverse_iterator Les algorithmes ... www.commentcamarche.net/faq/sujet-11255-introduction-a-la-stl-en-c-standard-template-library
Sous chaine c#Bonjour, y a t'il une methode en c# (predefinie) qui determine si une chaine (string) est une sous chaine d'une autre ? merci d'avance www.commentcamarche.net/forum/affich-12330254-sous-chaine-c
Caractère " (double quote) en C Bonjour, Je suis en train de faire un travail dans lequel j'ai besoin d'affecter la double côte( " ) à une variable de type chaine(C'est le seul chemin pour faire ce que je veux).Mais depuis 2 jours, j'ai tout tenté en vain.En fait voilà: char... www.commentcamarche.net/forum/affich-12054783-caractere-double-quote-en-c
Caractères spéciaux en langage CBonjour, je voudrais ecrire des caractères spéciaux un programme en C. quel code doit on écrire pour afficher des caracteres comme sur la page suivant??? htmlcarac peut etre que c'est pas possible. merci beaucoup. www.commentcamarche.net/forum/affich-2669924-caracteres-speciaux-en-langage-c
Les chaînes de caractères en C++Qu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une... www.commentcamarche.net/contents/cpp/cppstring.php3
Langage C - Les chaînes de caractèresQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne... www.commentcamarche.net/contents/c/cstring.php3
Caractères spéciaux HTMLCodage des caractères spéciaux Le standard HTML demande de respecter le codage des caractères ASCII 7 bits, c'est-à-dire que les caractères accentués ne sont pas autorisés. Il faut pour cela utiliser un codage particulier. Pour... www.commentcamarche.net/contents/html/htmlcarac.php3