Je vaux remplir une liste linéaire chaîné par une phrase puis l'afficher (chaque mot dans un maillon ).L'orsque j’exécute le programme un message s'affiche "main.exe a cesser de fonctionner"
voici le code:
SVP aidez moi pour résoudre ce problèmeCode:#include <stdio.h> #include <stdlib.h> #include<string.h> struct cellule { /* déclaration de la liste*/ char* mot ; struct cellule *suiv; }; /**************************************************/ typedef struct cellule maillon; /*********************************************************************/ maillon *allouer() { return(( maillon*)malloc(sizeof(maillon))); } /***********************************************************************/ void aff_val( maillon *p,char* ch) { p->mot=ch; } /************************************************************************/ void aff_adr( maillon *p, maillon *q) { p->suiv=q; } /***********************************************************************/ char* valeur(maillon *p) { return(p->mot); } /************************************************************************/ maillon *suivant( maillon *P) { return( P->suiv ); } /************************************************************************/ void llc_mot(maillon**tete,char ch[20]) { int taile; printf("Donner la taille de votre phrase"); scanf(" %d",&taile); printf("Donner votre phrase "); scanf("\n%s",&ch); maillon *p=NULL; maillon*q=NULL; p=allouer(); aff_adr(p,NULL); *tete=p; char* ch1; char* ch2; ch1=strtok(&ch,""); aff_val(p,ch1); int i; for(i=0;i<taile;i++) { q=allouer(); aff_adr(p,q); p=q; *ch2=strtok(NULL,""); aff_val(p,ch2); } aff_adr(p,NULL); } /*****************************************************************************/ void Affiche(maillon *t) { maillon *p; p=t; while(p != NULL) { printf("->%s\t",(*p).mot); p=suivant(p); } } /****************************************************************************/ int main() { maillon *t; char chaine[20]; llc_mot(&t,chaine); Affiche(t); }
Merci d'avance
Cordialement
-----