[問題] 請教一個關於讀檔的問題

看板C_and_CPP作者 (Arim5566)時間14年前 (2011/07/13 21:15), 編輯推噓0(007)
留言7則, 4人參與, 最新討論串1/2 (看更多)
想用一個struct讀取下列格式的檔案 Topic 0th: fft 0.122870 friendcaller 0.080509 lib 0.073730 wide 0.048917 floatfft 0.038760 doublefft 0.029771 contact 0.013050 speex 0.010540 audio 0.010130 xiph 0.007926 tmp 0.007620 sip 0.006640 flag 0.006633 ilbc 0.006633 friend 0.006598 btn 0.006501 invite 0.006154 src 0.005917 login 0.005806 nb 0.005792 Topic 1th: mobclix 0.082817 .... ... ... 每個topic下面會接20個配對(string double) struct word2prob { string name; double prob; }; struct content { string tIndex; word2prob field[20]; }; ... content topic; fread(&topic,sizeof(struct content),1,pfile); 但是一直發生記憶體區段錯誤 後來把string改成char [50]就可以了 請問這之間是struct放string錯了? 還是 fread的關係? 謝謝各位版友的指教 -- ~宅男的四個徵兆~ ∠□ ○ ! * \○/ ★    (○ ? ╦╦└□ " ○□═ □   □> ║║√√ ╦══╦ ∥    |\ 一回家就上PTT 每天想正妹 以當好人為樂 忘記正妹虧欠自己 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.172.244.16

07/13 21:16, , 1F
我猜因為string太大了XD
07/13 21:16, 1F

07/13 21:17, , 2F
為什麼不是用類似 file >> name >> prob; 之類的寫法呢?
07/13 21:17, 2F

07/13 21:17, , 3F
而且string不能用C來讀
07/13 21:17, 3F

07/13 21:17, , 4F
char []是連續的記憶體空間,可以直接塞
07/13 21:17, 4F

07/13 21:17, , 5F
但你不知道string內部的記憶體長什麼樣子
07/13 21:17, 5F
※ 編輯: Arim 來自: 218.172.244.16 (07/13 21:21)

07/13 21:26, , 6F
sstream<--
07/13 21:26, 6F

07/14 00:20, , 7F
怎麼會fread跟string混用...
07/14 00:20, 7F
文章代碼(AID): #1E7PgAx- (C_and_CPP)
文章代碼(AID): #1E7PgAx- (C_and_CPP)