隨機檔寫入問題... |
尚未結案
|
marxamk
一般會員 發表:13 回覆:8 積分:4 註冊:2004-01-16 發送簡訊給我 |
您好:
我目前使用隨機檔作為我的資料庫,隨機檔所定義單一筆資料的架構如下...
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 發送簡訊給我 |
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.
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |