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 : 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
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);
}