[C] lignes d'un fichier dans un tableau : Segmentation fault

cs_Michel76 Messages postés 13 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 24 janvier 2007 - 4 mars 2003 à 14:13
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 - 8 mars 2003 à 17:32
Bonjour,

Pardonnez-moi de cette question de débutant.

Soit un fichier contenant :
-----
001
002
-----

Je souhaiterais mettre chacune des lignes de ce fichier dans un tableau et manque quelque chose aux lignes suivantes que je n'arrive pas à trouver :

int nb_ligne;
FILE* fd;
char *ligne_fichier;

ligne_fichier=malloc(4*sizeof(char));
nb_ligne=0;

fd=fopen("fichier.txt","r");
while((fscanf(fd,"%s",ligne_fichier))!=EOF)
{
strcpy(codes[nb_ligne],ligne_fichier);
nb_ligne++;
}

---> Segmentation fault
Faut réservé de la mémoire pour le tableau (?) mais comment dois-je m'y prendre ?
Merci à vous

Michel

2 réponses

cs_Michel76 Messages postés 13 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 24 janvier 2007
4 mars 2003 à 14:54
J'ai trouvé tout seul super, non ? :-)

En ajoutant ces deux lignes avant l'affectation dans le tableau, ça fonctionne très bien.

codes=realloc(codes,(nb_codes+1)*sizeof(char *));
codes[nb_ligne]=malloc(strlen(ligne_fichier)*sizeof(char));

Michel
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
8 mars 2003 à 17:32
oui ça marche
mais il vaudrait mieux faire tes allocations par groupe (de 10 par exemple) au lieu d'allouer (et de désallouer) systématiquement à chaque entrée de ligne
... ne pas oublier le free à la fin
0
Rejoignez-nous