作者Arim (Arim5566)
看板C_and_CPP
標題[問題] 一個讀檔的問題
時間Fri Dec 24 23:49:51 2010
開發平台(Platform): (Ex: VC++, Gcc, Linux, ...)
linux,g++
額外使用到的庫(Library Used) (Ex: OpenGL, ...)
問題(Question):
用structure讀檔的使用問題
餵入的資料(Input):
typedef struct {
FOURCC idxFourCC;
DWORD dwSize;
struct avioldindex_entry
{
DWORD ckid;
DWORD dwFlags;
DWORD dwChunkOffset;
DWORD dwChunkLength;
}aIndex[];
} AVIINDEXENTRY;
預期的正確結果(Expected Output):
小弟目前是想把avi裏面的idx1的區塊給讀出來
他的格式是最前面兩個分別代表idx以及size(idxFourCC && dwSize)
後面都是以16個byte為一組的陣列
AVIINDEXENTRY idx1;
fread(&idx1,sizeof(idx1),1,pfAvi);
只是在idx1.aIndex[0].ckid這邊就錯了,前面的idxFourCC跟dwSize都有讀出來,
我是用UltraEdit去做比對的@@,之後我試著在idxFourCC跟dwSize讀完之後(這邊有
把aIndex的structure給註解掉)
再利用一個DWORD去讀,反而有正確讀出來
在這邊不知道是不是小弟的structure寫的方式不對?
另外還有一點疑惑的事,aIndex是一個陣列(aIndex[]),只是沒有給陣列的大小
困惑的是fread裏面的sizeof要怎麼找出aIndex[]的大小?
麻煩各位版友指正了@@ 謝謝
錯誤結果(Wrong Output):
程式碼(Code): (請善用置底文標色功能)
補充說明(Supplement):
--
~宅男的四個徵兆~
∠□ ○ ! * \○/ ★ (○ ?
╦╦└□ " ○□═ □ □>
║║√√ ╦══╦ ∥ |\
一回家就上PTT 每天想正妹 以當好人為樂 忘記正妹虧欠自己
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.197.57
※ 編輯: Arim 來自: 114.32.197.57 (12/24 23:50)
→ tropical72:我也很疑惑 aIndex[] 是不是該寫 *aIndex 12/25 00:06
恩~不知道為什麼可以編譯過~小弟這方面的觀念有待加強...
※ 編輯: Arim 來自: 114.32.197.57 (12/25 00:19)
→ tropical72:我先指出目前我看到的問題好了 12/25 00:20
→ tropical72:aIndex 是一個 struct, 是你自定義的資料型態(class), 12/25 00:21
→ tropical72:但你沒在 AVIINDEXENTRY 裡面給一個 "物件" 12/25 00:22
有吧@@ 我的struct的abstract name(應該是叫abstract name)有給一個
avioldindex_entry,然後他在AVIINDEXENTRY裏面的instance是aIndex[]
不知道小弟這樣講有沒有錯@@
※ 編輯: Arim 來自: 114.32.197.57 (12/25 00:25)
※ 編輯: Arim 來自: 114.32.197.57 (12/25 00:25)
→ tropical72:抱歉,是我錯 XD 12/25 00:27
→ bleed1979:FOURCC的大小是多少?我覺得跟Alignment可能有關係。 12/25 09:01
→ bleed1979:不過我想知道的是,能不能利用dwSize來讀檔? 12/25 09:03
→ Arim:FOURCC 大小是 DWORD 12/25 11:16