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

C 語言文件讀寫完全指南:文本、二進制與隨機存取

     編輯:C 語言入門

C 語言文件讀寫完全指南:文本、二進制與隨機存取

C 語言將文件視為字節流,提供標準庫函數(高層 I/O)與系統調用(低層 I/O)兩套機制操作存儲設備。本文聚焦標準庫 stdio.h 的文件管理 API。

打開文件:fopen()

FILE *fopen(const char *filename, const char *mode);

FILE 結構體包含流控制所需所有信息。常用模式:

模式說明
r唯讀打開現有文本文件
w寫入,截斷現有或創建新文本文件
a追加寫入,創建新文本文件
r+讀寫現有文本文件
w+讀寫,截斷或創建
a+讀寫追加,創建新文件

二進制文件在模式後加 b:rb、wb、ab、rb+ 等。

關閉文件:fclose()

int fclose(FILE *fp);

成功返回 0,失敗返回 EOF。會刷新緩衝區、釋放資源。

字符/字符串讀寫函數

功能函數說明
寫入字符fputc(int c, FILE *fp)寫單字符,成功返回字符,失敗返回 EOF
fputs(const char *s, FILE *fp)寫字符串,成功返回非負值,失敗返回 EOF
讀取字符fgetc(FILE *fp)讀單字符,返回字符或 EOF
fgets(char *buf, int n, FILE *fp)讀 n-1 字符或至換行/EOF,自動加 '\0'

格式化 I/O:fprintf()、fscanf()(遇空白停止)。

實戰範例:寫入與讀取文本文件

// 寫入
FILE *fp = fopen("/tmp/test.txt", "w+");
fprintf(fp, "This is testing for fprintf...\n");
fputs("This is testing for fputs...\n", fp);
fclose(fp);

// 讀取
fp = fopen("/tmp/test.txt", "r");
char buff[255];
fscanf(fp, "%s", buff);      // 僅讀 "This"
printf("1: %s\n", buff);
fgets(buff, 255, fp);        // 讀剩餘 " is testing..."
printf("2: %s\n", buff);
fgets(buff, 255, fp);        // 讀第二行
printf("3: %s\n", buff);
fclose(fp);

二進制塊讀寫:fread() / fwrite()

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

適用於數組、結構體等數據塊的高效存取,返回實際讀寫的元素數量。

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