Langage c

Fermé
amel - 12 avril 2015 à 15:54
 amel - 12 avril 2015 à 15:57
Bonjour,
j'ai un problème quand j veux récupérer la tête d'une liste il me retourne toujours la dernière tête


A voir également:

2 réponses

Gold68 Messages postés 15 Date d'inscription dimanche 12 avril 2015 Statut Membre Dernière intervention 13 mars 2017 1
12 avril 2015 à 15:56
Vérifie que ce n'ai pas ta sourie
1
struct cellule { /* déclaration de la liste*/
char* mot ;
struct cellule *suiv; };

/**************************************************/
typedef struct cellule maillon;
/*********************************************************************/
maillon *allouer()
{
return(( maillon*)malloc(sizeof(maillon)));
}
/***********************************************************************/
typedef struct {

char francais[20];
char anglais[30];
maillon *liste;

}enregistrement;
//*********************************************************************//
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 ); }
/************************************************************************/
maillon *llc(maillon**tete,char ch[256])
{ int i; char mot[20];
  • tete=NULL;

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);
printf(" %s",valeur(p));
ch2=strtok(NULL,",");

while(strcmp(ch2,".")!=0)
{
q=allouer();
aff_adr(p,q);
p=q;
aff_val(p,ch2);
printf(" %s",valeur(p)/**(*p).mot**/);
ch2=strtok(NULL,",");
}
aff_adr(p,NULL);
return *tete;
}

//**************************************************************************************************/
enregistrement remplir_tab(FILE *fich,enregistrement T[30])
{
char *chaine[256];
char mot;
int i;
maillon *p=NULL;maillon *t=NULL;
FILE* fichier;
fichier=fopen("dictionnaire.txt","r") ;


if (fichier!=NULL)

{ for(i=0; i<12/**n_ligne("dictionnaire.txt")**/; i++)
{
fseek(fichier,0,SEEK_CUR);
fscanf(fichier,"%s",chaine);
strcpy(T[i].anglais,chaine);
printf("%s\t",T[i].anglais);

fseek(fichier,1,SEEK_CUR);
fscanf(fichier,"%s",chaine);
strcpy(T[i].francais,chaine);
printf("%s\t",T[i].francais);

fseek(fichier,1,SEEK_CUR);
fscanf(fichier,"%s",chaine);
T[i].liste=llc(&p,chaine);


printf("\n");
}
fclose(fichier);
}
}

main()
{ enregistrement T[20];

maillon *p;
remplir_tab("dictionnaire.txt",T);



p=T[5].liste;
printf(" %s",valeur(p));

return 0;
}
0