salut, je sollicite votre aide car je ne sais pas si le problème vient de du code ou du compilateur, le programme créée une liste en saisissant une chaîne de caractères et en la plaçant dans le champ d'une structure.
merci d'a.vance
Code:#include <stdio.h> #include <stdlib.h> #include <conio.h> #define nb 5 typedef struct mot { char* valeur; struct mot *suivant; }mot; mot *fonction( mot *liste); mot *fonction( mot *liste) { int i; mot *tamp; tamp=(mot*)malloc(sizeof(mot)); //allocation dynamique. if(tamp==NULL) { fprintf(stderr, "probleme d'allocation" ); // erreur si l'allocation échoue. exit(EXIT_FAILURE); } char test[20]; //allocation d'un tableau statique. printf("donner la valeur de la chaine de charactere :\n"); fgets(test, 20, stdin); // lire la chaîne et la placer dans la mémoire à partir de l'adresse test. tamp->valeur=test; // affecter la chaîne au champ "valeur" de la structure. tamp->suivant=NULL; if(liste==NULL) //si la liste est nulle alors on la créée en lui affectant le maillon(structure tamp) qu'on vient d'initialiser. { liste=tamp; } else // sinon on ajoute la stucture "tamp" comme nouveau maillon à la suite du dernier maillon de la liste. { tamp->suivant=liste; liste=tamp; } return liste; } int main() { int i; mot *liste=NULL; mot *t[nb]; for(i=0;i<nb;i++) //creation de la liste { liste =fonction( liste); t[i]=liste; } for(i=0;i<nb;i++) // affichage de la liste de deux façon : 1-en utilisant le tableau 2-en utilisant uniquement les pointeurs. { mot *foo; foo=liste; printf("t[%d] = %s\n",i, (*t[i]).valeur); printf("valeur[%d] = %s\n",i, liste->valeur); liste=liste->suivant; free(foo); } return 0; }
-----