這次的作業是讀取WAV檔,
前面讀檔頭的動作跟讀BMP大同小異,
首先要先找到WAV的檔頭包了什麼東西,
整塊檔頭有什麼東西相信很多同學都PO了,
這邊我只列出我有用到的地方,
第一個當然就是檔案大小,位置在4,大小為4bytes,
再來是檔案類型,位置在8,大小也是4bytes,
不過檔案類型我也會有類似前面作業的問題,WAVE後面接了一些亂碼,
這個我一個一個字元去看都沒問題,可是整個印出來就是會有後面的東西,
真的不知道是哪來的,老師可以幫我看一下嗎。
char cB[4]={0,0,0,0};
fseek (imWAV,8,SEEK_SET) ;
fread(cB, 4, 1, imWAV);
Memo1->Lines->Add("檔案類型:");
Memo1->Lines->Add(cB);
我的程式裡是這樣寫的,讀出來就會變如圖所示。
第三個是Channel,位置在22,這個只有2個bytes,
最後是取樣率(Sample Rate),位置在24,4個bytes
我只有簡單拿幾個示範一下而已,
反正就是讀檔頭,其他有需要再加上即可,
基本上這作業只要之前讀bmp有認真做就不會很難,
幾乎是一樣的東西。
另外有加檔名上去,
程式裡是這樣寫的,Memo1->Lines->Add(OpenDialog1->FileName.c_str());
但是這樣出來會是絕對路徑,想請問老師有沒有辦法只取檔名就好?
字串最後必須要有一個結束符號!
回覆刪除char cB[5]={0,0,0,0,NULL};
你在 BCB Help 中查詢 ExtractFileName 就有了!
回覆刪除