Bonjour,
J'ai un programme écrit en C qui a quelques petits problèmes...
J'ai un fichier déclaré en tant que variable globale.
Dans une des procédures du programme, je fais une écriture sur ce fichier.
l'écriture se fait à travers la procédure ecrit_1can_nbcol :
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 /*variable globale*/ FILE *FichTemp; void Creation_Labels(NomFich EntreeCla,int lig_deb,int col_deb,int taille_lig,int taille_col,float *nb_labels) { float *ImagLab; ImagLab=vector(0,taille_col-1); /*traitement*/ ecrit_1can_nbcol(FichTemp,ImagLab,1,taille_col); fclose(FichTemp); free_vector(ImagLab,0,taille_col-1); }
et une fois que la première procédure finit, je fais une lecture du fichier dans le main par l'appel à la procédure lect_1can_nbcol:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 void ecrit_1can_nbcol(FILE *fichima, float *nli, int type_canal,long nbcolfen) { switch (type_canal){ case 1 : { fwrite(nli,4,nbcolfen,fichima); break; } /*traitement des autres cas*/ } }
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 int main(int argc, char **argv) { /*traitement*/ lect_1can_nbcol(FichTemp,nolig-lig_deb,1,ImagLab,1,taille_col); /*vérification du contenu de la lecture du fichier*/ for(num=0;num<taille_col;num++) { if(num==taille_col-1) fprintf(FichImaLect,"\n \n"); fprintf(FichImaLect," * %.2f",ImagLab[num]); } fclose(FichImaLect); free_vector(ImagLab,0,taille_col-1); /*traitement*/ }Et c'est que le problème arrive : l'écriture du contenu dans le fichier se fait correctement. Cependant, lorsque je fais la lecture du fichier dans le main, les données sont erronées.
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 void lect_1can_nbcol(FILE *fichima, int nolig, int tfen, float **nli,int type_canal,int nbcol) { long dep; int i; switch (type_canal){ case 1 : { dep=(long)(nolig*nbcol*4); fseek(fichima,dep,SEEK_SET); for (i=0;i<tfen;i++) fread(nli[i],4,nbcol,fichima); break; } /*traitment des autres cas*/ } }
Est-ce que vous avez une idée de où ça peut venir?
Partager