[問題] 不同struct如何存到同一個檔案內

看板C_and_CPP (C/C++)作者 (楓霧)時間16年前 (2010/06/11 19:36), 編輯推噓3(307)
留言10則, 4人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 之前是把不同的struct存到不同檔案裡, 如此要存成很多檔案才行,現在希望能 把資料全部存在一個檔案裡面。但是這 樣會碰到一個問題,就是如何去分辨他 是哪個struct的內容,因為我希望讀取 後能夠恢復成儲存時後的狀態。 例如: struct A內容型態是int string double int struct B內容型態是string double double 檔案裡為 10 A 0.1 5 8 B 0.2 5 . . . C 12.1 10.2 D 8.5 7.3 . . . 希望得到的正確結果: 儲存時struct A種類有10個,讀取後也有10個,且內容跟儲存前一樣 儲存時struct B種類有3個,讀取後也有3個,且內容跟儲存前一樣 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Windows,VC++ 補充說明: 無 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.207.32

06/11 19:37, , 1F
你是要存成文字檔案還是binary檔案?? 不管哪一種, 一個
06/11 19:37, 1F

06/11 19:38, , 2F
簡單的方式是, 存struct前, 先寫入一個識別項, 比如一個
06/11 19:38, 2F

06/11 19:38, , 3F
整數1或2, 來代表接著的是struct A還是B的資料, 那假定
06/11 19:38, 3F

06/11 19:39, , 4F
A與B的大小各自是固定的或者有記錄的, 混著存取就都OK.
06/11 19:39, 4F

06/11 19:46, , 5F
讀取時,先讀第一個數字看是1或2 再來malloc A或B的大小
06/11 19:46, 5F

06/11 19:47, , 6F
然後再讀取1或2後面的資料 好像是這樣 感謝!!
06/11 19:47, 6F

06/11 21:42, , 7F
檔案開始時寫入兩段struct stream的長度, 讀入後再分拆
06/11 21:42, 7F

06/11 21:43, , 8F
也可以. 在開始定下目錄區長度, 再順序寫有多少個A和B
06/11 21:43, 8F

06/11 21:44, , 9F
也可以. 總之檔案格式這東西沒規定的話隨你喜歡...
06/11 21:44, 9F

06/12 11:24, , 10F
或是寫成INI檔?
06/12 11:24, 10F
文章代碼(AID): #1C4X-ka9 (C_and_CPP)
文章代碼(AID): #1C4X-ka9 (C_and_CPP)