Lecture fichier binaire

Résolu
Mickylord Messages postés 63 Date d'inscription mardi 25 décembre 2001 Statut Membre Dernière intervention 11 février 2007 - 11 févr. 2007 à 11:53
Mickylord Messages postés 63 Date d'inscription mardi 25 décembre 2001 Statut Membre Dernière intervention 11 février 2007 - 11 févr. 2007 à 14:22
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

Mickylord Messages postés 63 Date d'inscription mardi 25 décembre 2001 Statut Membre Dernière intervention 11 février 2007
11 févr. 2007 à 14:22
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à
3
cs_sam20 Messages postés 184 Date d'inscription lundi 31 juillet 2006 Statut Membre Dernière intervention 26 mai 2016 3
11 févr. 2007 à 12:03
Cavient surement de ta boucle while
0
Mickylord Messages postés 63 Date d'inscription mardi 25 décembre 2001 Statut Membre Dernière intervention 11 février 2007
11 févr. 2007 à 12:09
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
0
Mickylord Messages postés 63 Date d'inscription mardi 25 décembre 2001 Statut Membre Dernière intervention 11 février 2007
11 févr. 2007 à 13:48
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)! ()
0
Rejoignez-nous