看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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