[問題] 想要修改舊資料檔局部內容..

看板C_and_CPP (C/C++)作者 (有馬)時間16年前 (2010/03/16 14:12), 編輯推噓1(1011)
留言12則, 3人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 想要將以有的資料檔,只修改局部內容, 結果把其他不想修改的部分也改了... 希望得到的正確結果: 原資料檔的內容為: 1 2 3 4 5 6 7 8 9 要修改第2筆資料(3 -> 0): 1 2 0 4 5 6 7 8 9 程式跑出來的錯誤結果: 結果把其他的部分都修改了: 0 0 0 0 0 0 0 0 0 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++ 有問題的code: (請善用置底文標色功能) FILE* ifcache; //產生原始舊資料檔 ifcache = fopen("fcache.txt","wb"); for(int i=1; i<=9; i++) fwrite(&i,sizeof(i),1,ifcache); fclose(ifcache); int i=0; //修改舊資料檔內容 ifcache = fopen("fcache.txt","wb"); fseek(ifcache,2*sizeof(int), SEEK_SET); fwrite(&i,sizeof(i),1,ifcache); fclose(ifcache); int buffer=0; //輸出 FILE* ofcache; ofcache = fopen("fcache.txt","rb"); for(int i=1; i<=9; i++) { fread(&buffer,sizeof(buffer),1,ofcache); cout<<buffer<<endl; } fclose(ofcache); 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.96.198.60

03/16 14:26, , 1F
http://ppt.cc/1lEt 看一下"w" mode會發生什麼事:)
03/16 14:26, 1F

03/16 14:29, , 2F
順便自己看一下應該用哪一種mode來達到你想做的事XD
03/16 14:29, 2F

03/16 14:35, , 3F
感謝VictorTom大, 真是太丟臉了 =_=|||
03/16 14:35, 3F

03/16 15:24, , 4F
看來只能寫入檔案屁股...
03/16 15:24, 4F

03/16 16:16, , 5F
請問該如何修改檔案的內容而不是將資料寫在後面??
03/16 16:16, 5F

03/16 16:18, , 6F
全讀出來放在記憶體中process改完再全部存進去?
03/16 16:18, 6F

03/16 16:19, , 7F
我也想知道有沒有更好的方法XDD很久以前有過一樣的疑問
03/16 16:19, 7F

03/16 16:37, , 8F
嗚~就是記憶體不夠用才想到存硬碟的....
03/16 16:37, 8F

03/16 16:40, , 9F
更正,是存SD卡(好像也一樣) ~~~~>_<~~~~~
03/16 16:40, 9F

03/16 17:51, , 10F
?? 只能寫檔尾? "r+" mode不是free read / write的嗎 ??
03/16 17:51, 10F

03/16 17:58, , 11F
小弟我承認我找了一下才找到, 所以壞心的讓你找一次XDDD
03/16 17:58, 11F

03/17 09:11, , 12F
感謝VictorTom大..
03/17 09:11, 12F
文章代碼(AID): #1Bdo5JWO (C_and_CPP)
文章代碼(AID): #1Bdo5JWO (C_and_CPP)