首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言文件讀寫操作完全指南:模式、函數與實戰代碼

     編輯:關於C

一、文件指針與打開模式

C語言通過 FILE* 指針操作文件。fopen 函數根據模式字符串決定打開方式,常見 12 種模式如下:

模式含義
rt只讀打開文本文件
wt只寫建立/截斷文本文件
at追加寫入文本文件
rb只讀打開二進制文件
wb只寫建立/截斷二進制文件
ab追加寫入二進制文件
rt+讀寫打開文本文件
wt+讀寫建立/截斷文本文件
at+讀寫打開文本文件,寫入追加
rb+讀寫打開二進制文件
wb+讀寫建立/截斷二進制文件
ab+讀寫打開二進制文件,寫入追加

關鍵區別:文本模式(t)會進行換行符轉換,二進制模式(b)不轉換,跨平台時建議顯式指定。

二、核心讀寫函數分類

類別函數用途
字符fgetc / fputc單字符讀寫
格式化fscanf / fprintf按格式讀寫
數據塊fread / fwrite二進制塊讀寫,高效
字符串fgets / fputs按行讀寫字符串

三、完整實戰示例

下面示例演示:創建文件、寫入數據、讀取數據、關閉文件,並包含錯誤處理。

#include 
#include 
#include 

#define FILENAME "data.bin"
#define BUFSIZE  1024

int main() {
    FILE *fp = NULL;
    char write_buf[] = "Hello, C File I/O!\nBinary data: \x01\x02\x03\x04";
    char read_buf[BUFSIZE];
    size_t bytes;

    /* 1. 二進制寫入 */
    fp = fopen(FILENAME, "wb");
    if (!fp) { perror("fopen wb failed"); return EXIT_FAILURE; }
    bytes = fwrite(write_buf, 1, sizeof(write_buf), fp);
    printf("寫入 %zu 字節\n", bytes);
    fclose(fp);

    /* 2. 二進制讀取 */
    fp = fopen(FILENAME, "rb");
    if (!fp) { perror("fopen rb failed"); return EXIT_FAILURE; }
    bytes = fread(read_buf, 1, BUFSIZE - 1, fp);
    read_buf[bytes] = '\0';
    printf("讀取 %zu 字節: %s\n", bytes, read_buf);
    fclose(fp);

    /* 3. 文本模式追加演示 */
    fp = fopen("log.txt", "at");
    if (fp) {
        fprintf(fp, "[LOG] %s", "操作完成\n");
        fclose(fp);
    }

    return EXIT_SUCCESS;
}

四、常見陷阱與最佳實踐

  • 必須檢查 fopen 返回值,失敗返回 NULL
  • 讀寫後調用 fclose 釋放資源,刷新緩衝區
  • 二進制數據優先用 fread/fwrite,避免格式化解析開銷
  • 大文件處理可用 fseek/ftell 定位,配合 rewind 復位
  • 跨平台路徑建議用正斜杠 / 或雙反斜杠 \\\\

五、總結

掌握文件模式選擇、讀寫函數分類與錯誤處理,是 C 語言文件操作的基石。實際開發中,根據數據類型(文本/二進制)、訪問模式(順序/隨機)選擇合適 API,能顯著提升程序健壯性與性能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved