struct wav_struct{
....
unsigned long subchunk2size; //wave資料長度(位元組)
short *data;(資料是兩個位元組 一個采樣點)
}
int main {
...
fp = fopen("C:/Users/Administrator/Desktop/011c020a.wav", "rb");//open a wave file (8k_16bits)
fp2 = fopen("C:/Users/Administrator/Desktop/aa.txt", "w");
fseek(fp, 40L, SEEK_SET);
fread(&wave.subchunk2size, sizeof(wave.subchunk2size), 1, fp);//wave檔案頭中第41-44L是wave資料的長度
wave.data = (short*)malloc(sizeof(short)*wave.subchunk2size/2); //開辟空間
fseek(fp, 44L, SEEK_SET); //從第45個位元組開始讀取資料
i = 0;
while (!feof(fp)){
fread(&wave.data[i], sizeof(short), 1, fp);
//fprintf(fp2, "%d\n", wave.data[i]);
i++;
printf("%x\n",c);
c = fgetc(fp);
//printf("%x\n", c);
}
問題: 無論是列印到aa.txt(fp2),還是輸出到DOS win中,均出現一種詭異情況:前面輸出很正常,但讀到檔案中間,fp出現例外,中斷了,
如上圖,讀到第2208個采樣點(short)還是正確的(用matlab驗證過),但之后似乎碰到feof(fp),抱歉,表達不清。
我已經用多個wavefile驗證,均出現此類情況。
求大神幫助!
uj5u.com熱心網友回復:
抱歉,圖片
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/104368.html
標籤:基礎類
上一篇:android記憶體泄漏
