Salut j'ai un tp dans lequel je dois charger une liste doublement chainée à partir d'un fichier texte.
La compilation est parfaite mais l'exécution ne fonctionne pas en fait une alerte m'annonce L'instruction à "0x********" emploie l'adresse mémoire "0x00000000". La mémoire ne peut pas être 'read'

aidez-moi s'il vous plai t
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
void charger_liste(LISTE **first,FILE *f)
{
    LISTE *last,*p;
    int l=0;
    char s[100];
 
    while (fgets(s,100,f))
    {
        last=get_last(*first);
        p= (LISTE *)malloc(sizeof(LISTE));
        p->prev=last;
        (p->d).ligne=l++;
        p->next=NULL;
        (p->d).s= (char*)malloc ((strlen(s)+1)*sizeof(char));
        strcpy((p->d).s,s);
        if (last==NULL)
            *first=p;
        last->next=p;
    }
}
 
LISTE* get_last(LISTE *first)
{
    if (first == NULL)
        return NULL;
    while(first->next != NULL)
    {
        first = first->next;
    }
    return first;
}
 
void view_liste (LISTE *first)
{
    for (; first; first=first->next)
        printf("%d",(first->d).ligne);
    printf(" \n %s",(first->d).s);
}