Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
816 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  liste chaine en c (truc de presque de basse)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

liste chaine en c (truc de presque de basse)

n°251086
marsu381
Posté le 22-11-2002 à 00:18:05  profilanswer
 

struct soldat_elt {
 char *ident;
 enum tgrade grade;
 enum tspecialite specialite;
 int taux_err;
 struct soldat_elt *suivant;
 struct soldat_elt *precedent;
 };
typedef struct soldat_elt *liste_soldat;
 
 
 
liste_soldat inser_soldat(liste_soldat soldat) {
    liste_soldat pt_temp;
    pt_temp=(liste_soldat)malloc(sizeof(struct soldat_elt));
    printf("%s","entrer nom du soldat \n" );
    scanf("%s",pt_temp->ident);
    printf("%s","entrer grade: \n" );
    scanf("%u",pt_temp->grade);
    printf("%s"," entrer specialite: \n" );
    scanf("%u",pt_temp->specialite);
    pt_temp->suivant=NULL;
    pt_temp->precedent=NULL;
// on insere en tete de la liste
if (soldat == NULL) {
    return pt_temp;}
    else { soldat->precedent=pt_temp;
           pt_temp->suivant=soldat;
           
           return pt_temp;}  
}
avec la structure et la fonction suivante
je souhaite inserer 1 element ds 1 liste chaine et ...
ca marche pas.

mood
Publicité
Posté le 22-11-2002 à 00:18:05  profilanswer
 

n°251124
Musaran
Cerveaulté
Posté le 22-11-2002 à 02:00:54  profilanswer
 

Rends les choses plus faciles à ceux qui veulent t'aider en utilisant le bouton [C++] !
 

Code :
  1. printf("%s","entrer nom du soldat \n" );
  2. scanf("%s",pt_temp->ident);


Rien n'a été alloué pour char* ident: écrasement de mémoire.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°251890
zastaph
Posté le 23-11-2002 à 01:25:26  profilanswer
 

Ben oui, char *ident alloue juste de la place pour un pointeur vers un char mais ne reserve pas la place prise par cette chaine. Pour cela, il faut faire un :

Code :
  1. ident=(char*)malloc(sizeof(char)*nb_char);


Je te conseille de passer par une variable temporaire

Code :
  1. char tmp[80];
  2. printf("entrer nom du soldat\n" );
  3. gets(tmp);
  4. ident=(char*)malloc(sizeof(char)*(strlen(tmp)+1));
  5. strcpy(ident,tmp);


comme ca tu reserves que ce que tu as besoin  :D  
 
printf("%s","entrer nom du soldat \n" );  :heink:  
tu sais que printf("entrer nom du soldat \n" ); ça marche aussi


Message édité par zastaph le 23-11-2002 à 01:26:35

---------------
yo, nippon ichi
n°252162
darkstalke​r
Saturn NTSC-J, What Else ?
Posté le 23-11-2002 à 18:03:14  profilanswer
 

Zastaph a écrit a écrit :

Beaucoup de choses...



 
 :jap: Tout à fait :jap:


---------------
Cyrix 5x86 120MHz, Tseng Labs ET4000/W32p VLB, Doom@45FPS <3
n°252375
zastaph
Posté le 24-11-2002 à 01:32:21  profilanswer
 

darkstalker a écrit a écrit :

 
 
 :jap: Tout à fait :jap:  




 
 [:muse]  
 
ou, cé obn   [:rix]


---------------
yo, nippon ichi
n°252527
marsu381
Posté le 24-11-2002 à 15:39:17  profilanswer
 

merci
de vos réponses


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  liste chaine en c (truc de presque de basse)

 

Sujets relatifs
[PHP] saucissonnner une chaine de charactere[c] ya un truc que je capte po avec scanf et les char
Script qui permet d'afficher une liste de fichier d'un répertoire[truc de newbie :)] Que les tableau epouse la forme des images
Netscape 4.7 reconnait pas mes css, pourquoi ? j'ai presque trouvé !Liste de variables qui s'incrémente
Liste Chainée en java | Gérer le resize [Resolu]Copie d'une liste doublement chainée
Liste déroulante et accès Oracleun truc tt con mais.... raaaaaaaaah
Plus de sujets relatifs à : liste chaine en c (truc de presque de basse)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR