Bonjour,
Je crois que j'ai un probleme d'allocation car j'ai cette erreur : Violation d'accès lors de la lecture de l'emplacement ...
voila mes deux structures
Fonction ajout entreprise
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 typedef struct Employe { char date[10]; char nom[30]; int num; }Employe; typedef struct Entreprise { char nom[30]; struct Employe tabemp[30]; struct Entreprise *suivant; }Entreprise;
procedure saisir entreprise
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 void ajouterEnTete( Entreprise ** pListe, char *n, Employe tab[30] ) { Entreprise *ancienPremier ; Entreprise *nouvelEntreprise ; int i; nouvelEntreprise = (Entreprise *)malloc( sizeof( Entreprise ) ) ; if( nouvelEntreprise == NULL ) { printf( "erreur d'allocation, arrêt du programme \n" ) ; exit(-1) ; } strcpy(nouvelEntreprise->nom, n ) ; for(i=0;i<3;i++){ nouvelEntreprise->tabemp[i].num = tab[i].num; strcpy(nouvelEntreprise->tabemp[i].nom,tab[i].nom); strcpy(nouvelEntreprise->tabemp[i].date,tab[i].date); } nouvelEntreprise->suivant = NULL ; if( *pListe == NULL ){ nouvelEntreprise->suivant = NULL ; } else { ancienPremier = *pListe ; nouvelEntreprise->suivant = ancienPremier ; } *pListe = nouvelEntreprise; }
procedure afficher
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 void saisirEntreprise(char *n, Employe tab[30] ) { int i,numemp; char nomemp[30],dateemp[10]; printf( "saisir un nom : \n" ); scanf( "%s", n) ; for(i=0;i<3;i++) { printf("rentrez un nom,une date d'inscription(JJ/MM/AAAA) et un numero"); scanf("%s %s %d", nomemp,dateemp,&numemp); strcpy(tab[i].nom,nomemp); strcpy(tab[i].date,dateemp); tab[i].num=numemp; } }
et mon main
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 void afficherListe( Entreprise *liste ) //-------------------------------------- // affichage de tous les éléments de la liste { int i,num; char nom[30],date[10]; if( liste == NULL ) { printf( "affichage impossible, la liste est vide\n" ) ; return ; } while(liste != NULL ){ printf( "nom = %s\n", liste->nom) ; liste = liste->suivant ;// passage au maillon suivant for(i=0;i<3;i++) strcpy(nom,liste->tabemp[i].nom); strcpy(date,liste->tabemp[i].date); num=liste->tabemp[i].num; printf( "num = %d \tnom = %s \tdate embauche = %s\n", num, nom, date) ; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 void main() { Entreprise * maliste = NULL ; int choix; char n1[30]; Employe tab1[30]; saisirEntreprise(n1,tab1); ajouterEnQueue(&maliste,n1,tab1); afficherListe(maliste); }
Mon erreur est renvoyée lors de l'execution de la procedure afficherliste au moment où je veux afficher les noms, num et date des employés.
Pourriez vous m'aider svp?
Partager