Bonjour, je travaille actuellement sur un projet qui transforme une image tga en image monochrome avec un niveau de compression assez spécial.
J'arrive à enregistrer correctement mes structures tels que le fichier se compose de cette manière
Header
- char Mot Magique *9
- int Largeur et Hauteur (donc 2*int)
- int Nombre de carré *1
Corps 1
- MCFcarresave_st Structure carré (autant de fois qu'il y a de carrés)
Corps 2
- unsigned char Pixels restant (autant de fois qu'il le faut)
Lorsqu'il enregistre, il enregistre tout dans son intégralité (j'ai vérifié par 3 4 manières différentes pour être vraiment sû). Mais lorsqu'il le lit, il s'arrête à un certain nombre de carrés (du genre 580 pour 1200 carrés...), alors que la fin réel du fichier n'est pas atteinte (malgré l'instruction feof).
Si je retire feof, il me remplit tout le reste avec des valeurs nulles, ce qui ne m'arrange pas...
Si je supprime les carrés en écriture et lecture, il me fait le même coup lors de la lecture des pixels...
Le fichier fait plus de 100ko, ce qui normalement ne devrait pas poser problème...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 //... //nb= nombre de carrés MCFcarresave_st buffer; for(int i=0; i<nb; i++) { fread(&buffer, sizeof(buffer), 1, fichier); if(feof(fichier)) { printf("Fichier corrompu.."); return -1; //... (traitement de la donnée) }
j'utilise CodeBlock.
Merci pour votre aide...
Partager