Lecture fichier binaire

[Résolu]
Signaler
Messages postés
63
Date d'inscription
mardi 25 décembre 2001
Statut
Membre
Dernière intervention
11 février 2007
-
Messages postés
63
Date d'inscription
mardi 25 décembre 2001
Statut
Membre
Dernière intervention
11 février 2007
-
Salut !
Bon aujourd'hui j'ai un "problème", du moins je pense ...

J'essaye tant bien que mal d'ouvrire un .wav en binaire.
Le problème arrive lorsque j'essaye d'afficher toutes les valeurs que je trouve,

FILE * son1, * son2;

long
int frequence;
unsigned short format, mode;

short
int info;

int compte = 0;

if ((son1 = fopen(
"son.wav",
"rb")) && (son2 = fopen(
"son2.wav",
"rb"))){

//Ici je me place apres le header
fseek(son1, 44, SEEK_SET);
fseek(son2, 44, SEEK_SET);

while ( fread ( &info, 2, 1, son2 ) ){
printf(

"Chaine gauche %d\t", info);

fread(&info, 2, 1, son2);
printf(
"Chaine droite %d\n", info);compte++;

}

printf(

"compte : %d", compte);

}

else{

printf(

"Probleme avec les fichiers.");}

-----------
Mes int font du 4 octet, d'ou le short int.

BREF, là c'est terrible...

J'ai un core duo, deux fois 1.5 ghz, et le programme prend une bonne trentaine de seconde avant de terminer la boucle, j'avou que je comprend pas, sourtout que le fichier en question fait 512ko.

J'ai mis un compteur pour compter le nombre de tour, y'en a 132300 !

Sachant que quand j'ouvre le fichier en texte, c'est instantanné, je suis un peu sceptique quand au fonctionnement de mon code.
Bon voila, dites moi que j'ai fait une erreur je vous en prit, je peu pas croire qu'il faille autant de temps pour lire un fichier si petit.

Merci

4 réponses

Messages postés
63
Date d'inscription
mardi 25 décembre 2001
Statut
Membre
Dernière intervention
11 février 2007

Bon, j'ai trouver le problème, et j'avou que j'ai pas été futé sur le coup...

C'est tout simplement le "printf" qui me ralenti completement.

J'sais plus où me mettre là
Messages postés
184
Date d'inscription
lundi 31 juillet 2006
Statut
Membre
Dernière intervention
26 mai 2016
3
Cavient surement de ta boucle while
Messages postés
63
Date d'inscription
mardi 25 décembre 2001
Statut
Membre
Dernière intervention
11 février 2007

c'est ce que je me dit, mais je vois vraiment pas l'erreur. A la place du while ( fread ( &info, 2, 1, son2 ) )
j'ai essayé aussi while( feof(son2)) et même probleme
Messages postés
63
Date d'inscription
mardi 25 décembre 2001
Statut
Membre
Dernière intervention
11 février 2007

bon je vais m'arraché tout mes cheveux si ca continu !

J'avais écrit que le compteur comptait 132300 tours pour la boucle de lecture du fichier en binaire.
Ce qui est normal car le fichier fait 512ko, si on enlève le header et que compte 2 octets par 2 c'est logique...

oui MAIS !

while ( i < 132300 ) i++;

ne prend pas 30 secondes a s'executer ! (oui oui, avec toute ma rigoureusité scientifique j'ai fait le test !! hehe)
et bien avec la boucle :

while ( fread ( &info, 2, 1, son2 ) )
{
printf(
"Chaine gauche %d\t", info);

fread(&info, 2, 1, son2);
printf(
"Chaine droite %d\n", info);

compte++;

}

ca prend au moins une trentaine de seconde. Alors est-ce que la lecture d'un fichier et l'affichage ralentie à ce point le processeur ? hmm, jsuis sceptique encore là ! Sachant qu'en mode texte c'est instantané ...

AU SECOUUUURS
BruNews aideee moi (t'en suuuuuupliie)! ()