Bonjour,

J'essaye de répondre a cette question :Ecrivez un programme qui lit une suite d'adresses dans un fichier et les met dans une table de structures.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
mon fichier contient deux lignes d'adresses suivantes:
 
6 rue flobet 352100
5 rue guy de ronoit 65200
j'ai essayé de réaliser ce code mais il m'envoit erreur de segmentation

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Erreur de segmentation (core dumped)
pourriez vous m'aider je bloque sur ça depuis des jours je ne trouves pas ou est le problème .

Merci

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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
typedef struct adresse adresse1;
struct adresse {
int numero;
int postale;
char *voie;
char *nomdelavoie;
char *ville;
};
 
int main(void) {
int n = 0, i;
struct adresse *adresse1;
    FILE *f = fopen("adresses.txt","r");
    if (!f) {
        printf("Impossible d'ouvrir le fichier\n");
        return 1;
    }
    char ligne[256];
    while (fgets(ligne,256,f)) {
        if (n == 0) {
            adresse1 = malloc(sizeof(struct adresse)*(n+1));
        }
        else {
            adresse1 = realloc(adresse1,sizeof(struct adresse)*(n+1));
        }
 
fscanf(f, "%d",&adresse1[n].numero);
fscanf(f, "%s",adresse1[n].voie);
fgets(adresse1[n].nomdelavoie , sizeof(adresse1[n].nomdelavoie), f);
fscanf(f, "%s", adresse1[n].ville);		
fscanf(f, "%d",&adresse1[n].postale);
        n++;
    }
    for (i = 0; i < n; i++)
    {
		printf("Numero : %d\n", adresse1[i].numero);
		printf("voie : %s\n", adresse1[i].voie);
		printf("Nom de la voie :%s\n", adresse1[i].nomdelavoie);
		printf("ville :%s\n", adresse1[i].ville);
		printf("postale : %d\n", adresse1[i].postale);
	fclose(f);
    free(adresse1);
    }
 
    return 0;
}