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