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

C語言文件操作函數大全:fopen/fread/fwrite/fseek/ftell 等完整參考

     編輯:關於C語言

文件指針操作核心函數速查

函數頭文件功能關鍵參數/返回值
fopenstdio.h打開文件模式: r/w/a/r+/w+/a+/rb/wb... 返回 FILE* 或 NULL
fclosestdio.h關閉文件,刷新緩衝區成功 0,失敗 EOF
freadstdio.h二進制讀取size_t fread(ptr, size, nmemb, fp) 返回實際讀取項數
fwritestdio.h二進制寫入size_t fwrite(ptr, size, nmemb, fp) 返回實際寫入項數
fseekstdio.h移動讀寫位置int fseek(fp, offset, SEEK_SET/CUR/END) 成功 0
ftellstdio.h獲取當前位置long ftell(fp) 返回位移,錯誤 -1
rewindstdio.h定位到文件開頭等價 fseek(fp,0,SEEK_SET)
fgetc/getcstdio.h讀單字符返回字符值或 EOF
fputc/putcstdio.h寫單字符返回寫入字符或 EOF
fgetsstdio.h讀一行(含換行)char* fgets(buf, size, fp) 返回 buf 或 NULL
fputsstdio.h寫字符串(不加換行)成功非負,失敗 EOF
feofstdio.h判斷文件結束非零=已到末尾
ferrorstdio.h判斷錯誤狀態非零=發生錯誤
clearerrstdio.h清除錯誤/EOF 標誌無返回值
fflushstdio.h刷新輸出緩衝區成功 0,失敗 EOF
setvbufstdio.h設置緩衝模式_IOFBF/_IOLBF/_IONBF
freopenstdio.h重新打開文件流關閉舊流,打開新路徑
filenostdio.h獲取文件描述符返回 int fd
fdopenstdio.h文件描述符轉 FILE*模式需與 fd 一致
tmpfilestdio.h創建臨時文件自動刪除,返回 FILE*
removestdio.h刪除文件成功 0
renamestdio.h重命名文件成功 0

常用模式字符串

"r"   只讀,文件必須存在
"w"   只寫,截斷或創建
"a"   追加寫入,創建
"r+"  讀寫,文件必須存在
"w+"  讀寫,截斷或創建
"a+"  讀寫,追加
加 'b' 表示二進制模式(Windows 區分換行轉換,Linux 忽略)

二進制結構體讀寫範例


struct Rec { char name[20]; int val; } rec[3];
FILE *fp = fopen("data.bin", "wb");
fwrite(rec, sizeof(struct Rec), 3, fp);
fclose(fp);

fp = fopen("data.bin", "rb");
fread(rec, sizeof(struct Rec), 3, fp);
for(int i=0;i<3;i++) printf("%s %d\n", rec[i].name, rec[i].val);
fclose(fp);

錯誤處理模板


FILE *fp = fopen("file.txt", "r");
if (!fp) { perror("fopen"); return -1; }
/* 操作... */
if (ferror(fp)) { perror("IO error"); }
fclose(fp);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved