Langage c

amel -  
 amel -
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

2 réponses

  1. Gold68 Messages postés 16 Statut Membre 1
     
    Vérifie que ce n'ai pas ta sourie
    1
  2. amel
     
    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