採用簡易三層架構:
LoginUI、MainUI、AddBookUI 等),回傳 int 代表下一個介面編號。main() 透過 switch 根據介面編號跳轉,實現介面流程控制。FILE* 進行二進位/文字檔的讀寫。FILE *pFile = fopen("data.dat", "wb"); // 二進位寫入,若檔案存在則截斷
if (pFile) {
const char *msg = "Hello File";
fwrite(msg, 1, strlen(msg), pFile); // 寫入位元組陣列
fflush(pFile); // 強制刷新緩衝區,確保資料落盤
fclose(pFile);
}
FILE *pFile = fopen("data.dat", "rb");
if (pFile) {
fseek(pFile, 0, SEEK_END); // 移至檔案尾
long len = ftell(pFile); // 取得檔案大小
rewind(pFile); // 回到檔案頭
char *buffer = (char*)malloc(len + 1);
fread(buffer, 1, len, pFile); // 一次讀入
buffer[len] = '\0'; // 手動加結尾符
printf("檔案內容:%s\n", buffer);
free(buffer);
fclose(pFile);
}
| 函式 | 用途 |
|---|---|
fopen | 開啟檔案,模式 wb/rb 避免換行轉換 |
fwrite/fread | 二進位區塊讀寫,適合結構體陣列 |
fflush | 刷新輸出緩衝區,不關閉檔案即可更新磁碟 |
fseek/ftell/rewind | 隨機存取與取得檔案長度 |
fclose | 關閉檔案,釋放資源,確保資料寫入 |
fwrite(&struct, sizeof(struct), count, fp) 直接序列化/反序列化。ferror(fp) 或 feof(fp)。掌握 FILE* 核心 API、二進位模式與緩衝區控制,即可在 C 專案中實作穩健的資料持久化層。搭配簡易選單驅動架構,快速構建完整的控制台應用程式。