Problème de lecture d'un fichier
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.
Code:
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);
} |
l'écriture se fait à travers la procédure ecrit_1can_nbcol :
Code:
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*/
}
} |
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:
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*/
} |
Code:
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*/
}
} |
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.
Est-ce que vous avez une idée de où ça peut venir?