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?






Répondre avec citation
Partager