Tp informatique 5
Page 1 sur 1 • Partager •
Tp informatique 5
voila je met le TP 5 d'informatique a votre disposition
voila j'essaye de mettre les autres TP d'ici le début de la semaine
- Spoiler:
/* sons.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
int main( int argc, char *argv[])
{
FILE* canal; // déclaration du canal
char signature [5], sign2 [5], chunk [5], nomchunk[5];
long lgchunk,frqech,nboctps, repetition, lgchunk2, K,*x;
short pcm, nbvoies, nboctpe, nboctpev, longueur;
double duree;
int i;
printf("ouverture du fichier %s\n", argv[1]);
canal = fopen(argv[1],"rt");
if (canal == 0 )
{
printf("%s not found\n",argv[1]);
exit (-1);
}
/* debut de l'aquisition de head */
fgets (signature, 5, canal);
if ( strcmp (signature, "RIFF" ) !=0)
{
printf(" ce n'est pas le bon fichier \n");
exit (-2);
}
printf ("1er signature = %s \n", signature);
fread( &longueur, sizeof(long) , 1, canal);
printf ("longeur du fichier = %ld\n", longueur +
;
fgets (sign2, 5, canal);
if ( strcmp(sign2, "WAVE" ) !=0)
{
printf(" ce n'est pas le bon fichier \n");
exit (-2);
}
printf ("2eme signature = %s \n", sign2);
/* debut du chunk */
// nom
fgets (chunk, 5, canal);
printf ("nom du chunk : %s\n", chunk);
// longueur
fread( &lgchunk, sizeof(long), 1, canal);
printf ("longueur du chunk %s : %ld\n",chunk, lgchunk +
;
// type
fread( &pcm , sizeof(short), 1, canal);
printf ("type du fichier : %d\n", pcm);
// nb voie
fread (&nbvoies, sizeof(short), 1, canal);
printf ("nb voies : %d\n", nbvoies);
// frequence echantillage
fread (&frqech, sizeof(long), 1 , canal);
printf(" frequence d'echantillonage : %ld\n", frqech);
// nombre d'octet par seconde : nboctps
fread (&nboctps, sizeof(long), 1, canal);
printf ("nombre de octet par secondes : %ld\n", nboctps);
// nbre octet par echantillon : nboctpe
fread (&nboctpe, sizeof(short), 1, canal);
printf ("nombre d'octet par echantillon : %d\n", nboctpe);
// nombre de bits par echantillon et par voie : nboctpev
fread (&nboctpev, sizeof(short), 1 ,canal);
printf ("le nombre de bits par échantillon et par voie est : %d\n", nboctpev);
// fin du premier chunk
// recherche du chunk data
do
{
fgets (nomchunk, 5, canal);
fread (&lgchunk2, sizeof(long), 1,canal);
repetition =strcmp (nomchunk,"data");
if (repetition!=0)
fseek (canal,lgchunk2,SEEK_CUR);
}
while (repetition!=0);
printf (" on arrive au chunk : %s\n", nomchunk);
// calcul de la durée
printf (" on calcul la duree du son ");
duree =(double) lgchunk2 / nboctps;
printf (" la duree est de : %lf \n", duree);
// calcul des echantillons sautes
printf( "conbien d'echantillons voulez-vous sauter ? \n");
scanf ("%d",&K);
printf("nombre totale d'echantillon : %ld \n", K);
//allocation memoire pour les echantillons
x=calloc (K, nboctpe);
fread (x,K,nboctpe,canal);
// ecriture et ouverture dans le fichier texte
FILE *can;
can = fopen( "tempo.txt","wt");
for (i=0;i<2*K;i+2)
{
fprintf(can, "%6d\t%6d\n",x[i], x[i+1]);
}
fclose(can);
fclose(canal);
// ouverture de gnuplot
FILE *oleoduc;
oleoduc = fopen("gnuplot","w");
if (oleoduc ==0)
{
printf ("impossible à ouvrir\n");
exit (-4);
}
fprintf (oleoduc,"pl \"tempo.txt\" w i\n");
fclose (oleoduc);
fflush(oleoduc);
return 0;
}
voila j'essaye de mettre les autres TP d'ici le début de la semaine
bastien.b [TD1]- Messages: 14
Date d'inscription: 24/05/2011
Age: 20
Localisation: caen
Sujets similaires» Pirate Informatique
» gag informatique ?
» Informatique et photo
» Carnet de vol informatique
» Exit - Que c'est beau l'informatique (Botrytix)
» gag informatique ?
» Informatique et photo
» Carnet de vol informatique
» Exit - Que c'est beau l'informatique (Botrytix)
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum




