全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:724
推到 Plurk!
推到 Facebook!

隨機檔寫入問題...

尚未結案
marxamk
一般會員


發表:13
回覆:8
積分:4
註冊:2004-01-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-09 18:13:01 IP:140.115.xxx.xxx 未訂閱
您好: 我目前使用隨機檔作為我的資料庫,隨機檔所定義單一筆資料的架構如下... struct testdata_struct { char order[4]; char chgcolor[4]; char TeR[6]; char TeG[6]; char TeB[6]; char StR[6]; char StG[6]; char StB[6]; char Tname[10]; char Code[6]; char Tdate[25]; }; testdata_struct testdata; 然而,目前遇到的問題就是取代資料的問題... 假設目前我寫入10筆資料(十筆 testdata) 那麼問題來了.. 有時候我資料必須取代 例如第三筆資料我必須更新... 我該如何做呢? 我可以用fseek定到我要的位置,但是寫入的話,會把原有的資料往後推一個欄位... 謝謝您
g6101
高階會員


發表:22
回覆:129
積分:110
註冊:2002-06-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-09 23:44:30 IP:163.29.xxx.xxx 未訂閱
marxamk您好: 一.更新第三筆資料方法如下 //設定寫入位址 fseek(filename,sizeof(struct testdata_struct)*2,SEEK_SET); fwrite(&testdata,sizeof(struct testdata_struct),1,filename); 二.隨機檔是無法從中間插入(只能修改及增加)資料,不過變通方法有二 (1)當資料不多時,可以將結構資料全部讀進來,再按照您要變更的結構資料(刪除或插入)順序寫回去. (2)當資料非常多(幾千/萬筆)時,第一個方法是行不通的(記憶體可能不夠用),需將filename資料讀進一筆寫入tempfile一筆(循環讀寫),過程中加入處理程序(增加或刪除資料),讀寫結束後關閉檔案刪除filename,變更tempfile成filename.
系統時間:2024-05-18 14:47:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!