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

C語言文件操作常用函數速查與讀寫實戰代碼

     編輯:關於C

一、核心 API 速查表

函數功能典型用途
fopen / fclose打開/關閉流所有文件操作起止
fgetc / fputc單字符讀/寫逐字符處理
fgets / fputs字符串/行讀/寫文本行處理
fscanf / fprintf格式化讀/寫結構化文本
fread / fwrite二進制塊讀/寫高效數據傳輸
fseek / ftell / rewind定位/獲取位置/復位隨機訪問
feof / ferror檢測 EOF/錯誤循環終止條件
remove / rename刪除/重命名文件管理
tmpfile / tmpnam臨時文件/唯一名中間數據存儲

二、字符級寫入示例

#include 
#include 

int main() {
    const char *filename = "D:/1.txt";
    const char *data = "alkdjlkfjdlkjfodijfoidjdijfkldjfk";
    FILE *fp = fopen(filename, "a+");  // 追加讀寫,文件不存在則創建
    if (!fp) { perror("fopen"); return 1; }

    for (size_t i = 0; i < strlen(data); i++) {
        if (fputc(data[i], fp) == EOF) { perror("fputc"); break; }
    }
    fclose(fp);
    return 0;
}

三、字符級讀取示例

#include 

int main() {
    const char *filename = "D:/1.txt";
    FILE *fp = fopen(filename, "r");
    if (!fp) { perror("fopen"); return 1; }

    int ch;
    while ((ch = fgetc(fp)) != EOF) {
        putchar(ch);
    }
    fclose(fp);
    return 0;
}

四、關鍵注意事項

  • 模式選擇:文本(t)會轉換換行符,二進制(b)不轉換,跨平台建議顯式指定
  • 緩衝區:標準 I/O 默認全緩衝(文件)/ 行緩衝(終端),fflush 強制刷新
  • EOF 判斷:讀取函數返回 EOF(通常 -1)表示結束或出錯,需配合 feof/ferror 區分
  • 路徑分隔符:Windows 接受 /,推薦統一用正斜杠避免轉義麻煩
  • 大文件:32 位系統用 fseeko/ftello 或 _fseeki64 支持 64 位偏移

五、進階模式:二進制結構體讀寫

#include 
#include 

#pragma pack(push, 1)
struct Record { uint32_t id; char name[32]; double score; };
#pragma pack(pop)

int main() {
    struct Record r = { 1001, "Alice", 98.5 };
    FILE *fp = fopen("records.dat", "wb");
    fwrite(&r, sizeof(r), 1, fp);
    fclose(fp);

    struct Record r2;
    fp = fopen("records.dat", "rb");
    fread(&r2, sizeof(r2), 1, fp);
    printf("ID:%u Name:%s Score:%.1f\n", r2.id, r2.name, r2.score);
    fclose(fp);
    return 0;
}

六、總結

熟練掌握 fopen/fclose、四大類讀寫函數、定位與錯誤檢測,是 C 文件操作的基礎。實際開發中,根據數據特性選擇文本/二進制模式、字符/塊/格式化 API,並做好錯誤處理與資源釋放。

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