?? algo1201.cpp
字號:
Status MergeFile (FILE *f, FILE *g, FILE *h) { // 算法12.1
// 由按關鍵字遞增有序的非空順序文件f和g歸并得到新文件h,三個文件均
// 已打開,其中,f和g為只讀文件,文件中各附加一個最大關鍵字記錄,
// 且g文件中對該記錄的操作為插入。h為只寫文件
RcdType fr, gr;
fread(&fr, sizeof(RcdType), 1, f);
fread(&gr, sizeof(RcdType), 1, g);
while (!feof(f) || !feof(g)) {
if (fr.key < gr.key) { // 復制"舊"主文件中記錄
fwrite(&fr, sizeof(RcdType), 1, h);
/*if (!feof(f))*/ fread(&fr, sizeof(RcdType), 1, f);
} else if (gr.code=='D' && fr.key==gr.key) {
// 刪除"舊"主文件中記錄,即不復制
/*if (!feof(f))*/ fread(&fr, sizeof(RcdType), 1, f);
/*if (!feof(g))*/ fread(&gr, sizeof(RcdType), 1, g);
} else if (gr.code=='I' && fr.key>gr.key) {
// 插入,函數P把gr加工為h的結構
fwrite(P(gr), sizeof(RcdType), 1, h);
/*if (!feof(g))*/ fread(&gr, sizeof(RcdType), 1, g);
} else if (gr.code=='U' && fr.key==gr.key) {
// 更改"舊"主文件中記錄
fwrite(Q(fr, gr), sizeof(RcdType), 1, h);
// 函數Q將fr和gr歸并成一個h結構的記錄
/*if (!feof(f))*/ fread(&fr, sizeof(RcdType), 1, f);
/*if (!feof(g))*/ fread(&gr, sizeof(RcdType), 1, g);
} else return ERROR; // 其它均為出錯情況
} // while
return OK;
} // MergeFile
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -