Problème utilisation fonction en boucle
Bonjour,
Dans le cadre d'un programme, j'utilise plusieurs fonctions :
La première fonction permet de parcourir un fichier, et de le lire ligne à ligne. Chaque ligne est de la forme 3 caractères pour un mois, un espace, 3 chiffres. ex : "jan 101"
La deuxième fonction traite ces lignes de la façon suivante :
on recupère la ligne, et selon le mois, on ajoute le chiffre de la ligne dans un fichier nommé : mois-datedelancement.txt
La date fait 12 caracteres.
ex d'un fichier: fev-070627180403.txt
mois-AAMMJJHHMinMinSS.txt
Si le fichier n'existe pas ( ce qui est le cas au lancement du programme ), il est crée.
Après utilisation du programme, celui-ci plante. Il arrive à réaliser un appel à la fonction traite_ligne, mais la 2ème ligne n'est pas traitée.
Il s'agit peut être d'un problème de mémoire ?
Je vous remercie d'avance de votre aide,
Isk
Code:
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
|
//fonction qui traite un fichier chemin est le chemin complet du fichier et
//date est la date du lancement du programme
void traite_fichier(char *chemin,char *date) {
char ligne[256];
FILE* fic;
fic=malloc(sizeof(FILE));
fic=fopen(chemin,"r");
if ( fic == NULL ) {
printf("Erreur de lecture du fichier\n");
return 0;
}
//on appelle ici la fonction traite_ligne en boucle jusqu'à ce qu'on ait plus
//de ligne
while( fgets(ligne, sizeof ligne ,fic) != NULL ) {
traite_ligne(ligne,date);
}
printf("\n");
printf("%s a ete traite\n",chemin);
fclose(fic);
free(fic);
free(ligne);
}
//fonction qui traite les lignes
// char* sub_string(char* entree,int deb, int fin)
// est une fonction qui ressort les caracteres de entree[deb] à entree[fin]
void traite_ligne(char * ligne,char * date) {
char nomfic[16];
FILE* fichier;
fichier= malloc(sizeof(FILE));
strcpy(nomfic,sub_string(ligne,0,2));
strcat(nomfic,"-");
strcat(nomfic,date);
strcat(nomfic,".txt");
fichier=fopen(nomfic, "a");
fprintf(fichier,"%s\n",sub_string(ligne,4,6));
fclose(fichier);
free(nomfic);
free(fichier);
} |