duch | non, je n'ai pas essayé les conversions de chaines en int, et à vrai dire je ne les connais pas car je ne connais pas le C.
en fait ce qui me turlupine, c'est que j'essaie de faire un printf ("%d \n", mavaleur) ça me renvoi n'importe quoi, il n'y a que si je fait printf ("%s \n", mavaleur) que ça me renvoi le truc correctement, donc j'en ai conclu que c'était un string (un peu hativement).
bon voilà le code
Code :
- #include <stdio.h>
- #include <stdlib.h>
- unsigned int maxsample = 0;
- char erg[35];
- int is16bitfile = 1;
- int main(int argc, char *argv[]) {
- unsigned int time, samplerate, channels, totalsamples, samplesbysecond;
- int i, val, val2;
- FILE *infile;
- FILE *file;
- time = (int) argv[3];
- samplerate = (int) argv[4];
- channels = (int) argv[5];
- samplesbysecond = (int) argv[6];
- samplerate = samplerate*channels;
- totalsamples = time*samplerate;
- infile = fopen(argv[1], "r" );
- file = fopen(argv[2], "w" );
- fputs("data=", file);
- for (i=0;i<totalsamples;i++) {
- val = fgetc(infile);
- if (is16bitfile) {
- val2 = fgetc(infile);
- if (val2 > 127) { val2 = val2 - 255; }
- val = 256*val2 + val;
- }
- // on stocke la plus haute valeur
- if(maxsample < abs(val)) {
- maxsample = abs(val);
- }
- // on utilise que samplesbysecond échantillons par seconde
- printf ("%d \n", samplesbysecond);
- if (i%(samplerate/samplesbysecond)==0) {
- sprintf(erg, "%d,", maxsample);
- fputs(erg, file);
- maxsample = 0;
- }
- }
- // housekeeping
- fclose(file);
- fclose(infile);
- return 1;
- }
|
en fait mon problème c'est que j'ai une Floating point exception (au niveau de if (i%(samplerate/samplesbysecond)==0) {) qd je lance le programme comme cela :
./fftux theevent-zoom.wav cho.raw 227 44100 2 10
donc je me suis dis que c'était un problème de types... Message édité par duch le 06-06-2005 à 18:13:59
|