liste chaine en c (truc de presque de basse) - C++ - Programmation
Marsh Posté le 22-11-2002 à 02:00:54
Rends les choses plus faciles à ceux qui veulent t'aider en utilisant le bouton [C++] !
Code :
|
Rien n'a été alloué pour char* ident: écrasement de mémoire.
Marsh Posté le 23-11-2002 à 01:25:26
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 :
|
Je te conseille de passer par une variable temporaire
Code :
|
comme ca tu reserves que ce que tu as besoin
printf("%s","entrer nom du soldat \n" );
tu sais que printf("entrer nom du soldat \n" ); ça marche aussi
Marsh Posté le 23-11-2002 à 18:03:14
Zastaph a écrit a écrit : Beaucoup de choses... |
Tout à fait
Marsh Posté le 24-11-2002 à 01:32:21
darkstalker a écrit a écrit : Tout à fait |
ou, cé obn
Marsh Posté le 22-11-2002 à 00:18:05
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.