读取.wav文件中的double数据块
读取.wav文件中的数据,前44B是文件头,跳过这44字节后面的就是振幅数据块,按照在MATLAB中的显示是double型的数据,所以我用以下程序读写,发现读出的数据完全不对,不知道问题出在哪里,还请各位大神指教。那个sample_size和sample_count都是计算过的,并且文件大小是44144,去除文件头的44字节,正好是数据大小44100.本人对C语言处于刚学阶段,如果有更好的方法,可以告诉我该怎么读取这块的数据吗,万分感谢!
positional_mix21.rar
(266.8 KB)
#include "stdlib.h"
#include "stdio.h"
int main()
{
FILE *fp;
FILE *fout;
int i;
int sample_size;
int sample_count;
double value[220500];
sample_size = 2;
sample_count = 220500;
fp=fopen("positional_mix21.wav","rb");
if((fp=fopen("positional_mix21.wav","rb"))==NULL)
{
printf("can't open this file\n");
exit(0);
}
fseek(fp,44L,0);
for (i = 0; i < sample_count; i++)
{
fread(&value[i], sizeof(double), 1, fp);
}
fout = fopen("fileToSave.txt", "w");
for (i = 0; i < sample_count; i++)
{
fprintf(fout, "%lf\n", value[i]);
}
fclose(fp);
fclose(fout);
}
[此贴子已经被作者于2017-7-6 18:52编辑过]