bonsoir tout le monde .. bon voila un code que j'ai cree au but de lire et afficher des donnees d'apres un Fichier .. mais a chaque fois que je l execute .. le programme cesse de fonctionner .. l'erreur se trouve dans la ligne 90 .. voila mon code

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
typedef struct {
    char dateConex[10];
    char URL[30];
}Conex;
 
typedef struct {
    char idUser[10];
    char nomUser[15];
    int nbrConex;
    Conex *listC;
}User;
 
typedef struct {
    char adrMac[25];
    char nomMac[15];
    int nbrUser;
    User *listU;
}Mac;
 
typedef struct {
    char CIN[10];
    char nomEmp[20];
    char idUser[10];
    float salaire;
    int age;
}Emp;
 
typedef struct {
    int codeSer;
    char nomSer[10];
    Mac *listMac;
    int nbrMac;
    Emp *listEmp;
    int nbrEmp;
}Ser;
 
Ser *s;
 
void loaData(char *Path)
{   char S;
    int ns = 0, ne = 0, nm = 0, nu = 0, nc = 0;
    FILE *dataFile;
    if((dataFile = fopen(Path, "r")) == NULL){
        printf("Cannot open the file %s",Path);
    }else{
        do{
            fscanf(dataFile, "%c", &S);
            if(S=='S'){
                if(ns == 0){
                  ns++;
                  s = (Ser*)malloc(sizeof(Ser));
                }else{
                  ns++;
                  s = (Ser*)realloc(s, sizeof(Ser) * ns);
                }
                fscanf(dataFile, "%d %s", &s[ns-1].codeSer, s[ns-1].nomSer);
                s[ns-1].nbrEmp = 0;
                s[ns-1].nbrMac = 0;
            }
            else if(S=='E'){
                if(ne == 0){
                  ne++;
                  (s+ns-1)->listEmp = (Emp*)malloc(sizeof(Emp));
                }else{
                  ne++;
                  (s+ns-1)->listEmp = (Emp*)realloc((s+ns-1)->listEmp, sizeof(Emp) * ne);
                }
                fscanf(dataFile,"%s %s %s %f %d", s[ns-1].listEmp[ne-1].CIN, s[ns-1].listEmp[ne-1].nomEmp, s[ns-1].listEmp[ne-1].idUser, &s[ns-1].listEmp[ne-1].salaire, &s[ns-1].listEmp[ne-1].age);
                s[ns-1].nbrEmp = ne;
            }
            else if(S == 'M'){
                if(nm == 0){
                  nm++;
                  (s+ns-1)->listMac = (Mac*)malloc(sizeof(Mac));
                }else{
                  nm++;
                  (s+ns-1)->listMac = (Mac*)realloc((s+ns-1)->listMac, sizeof(Mac) * nm);
                }
                fscanf(dataFile,"%s %s", s[ns-1].listMac[ne-1].adrMac, s[ns-1].listMac[ne-1].nomMac);
                s[ns-1].nbrMac = nm;
            }
            else if(S == 'U')
            {
                if(nu == 0){
                    nu++;
                    ((s[ns-1].listMac[nm-1]).listU) = (User*)malloc(sizeof(User));
                }else{
                    nu++;
                    ((s[ns-1].listMac[nm-1]).listU) = (User*)realloc((s[ns-1].listMac[nm-1]).listU , sizeof(User) * nu);
                }
                fscanf(dataFile,"%s %s", s[ns-1].listMac[ne-1].listU[nu-1].idUser, s[ns-1].listMac[ne-1].listU[nu-1].nomUser);
                s[ns-1].listMac[nm-1].nbrUser = nu;
            }
            else if(S == 'C'){
                if(nc == 0)
                {
                    nc++;
                    (s+ns-1)->listMac[nm-1].listU[nu-1].listC = (Conex*)malloc(sizeof(Conex));
                }else{
                    nc++;
                    (s+ns-1)->listMac[nm-1].listU[nu-1].listC = (Conex*)realloc((s+ns-1)->listMac[nm-1].listU[nu-1].listC, sizeof(Conex) * nc);
                }
                fscanf(dataFile,"%s %s", s[ns-1].listMac[ne-1].listU[nu-1].listC[nc-1].dateConex, s[ns-1].listMac[ne-1].listU[nu-1].listC[nc-1].URL);
                (s+ns-1)->listMac[nm-1].listU[nu-1].nbrConex = nc;
            }
        }while(!feof(dataFile));
    }
}
 
void showData()
{
    Ser *actuelS = s;
    Emp *actuelE;
    Mac *actuelM;
    User *actuelU;
    Conex *actuelC;
 
    while(actuelS)
    {
        actuelE = actuelS->listEmp;
        actuelM = actuelS->listMac;
        printf("***code : %d, nom : %s, nbrEmp : %d, nbrMac : %d\t***\n\n", actuelS->codeSer, actuelS->nomSer, actuelS->nbrEmp, actuelS->nbrMac);
        printf("*****Employee :\n");
        while(actuelE)
        {
            printf("nom : %s, id : %s, CIN : %s, salaire : %f, age : %d\n", actuelE->nomEmp, actuelE->idUser, actuelE->CIN, actuelE->salaire, actuelE->age);
            actuelE++;
        }
        while(actuelM)
        {
            printf("%s", actuelM->nomMac);
        }
 
    }
}
 
int main()
{
    loaData("C:/Users/Tha_SLAYER/Desktop/TP_Struct/DATA_TP1.txt");
    showData();
    return 0;
}