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

C 語言文件操作函數完整手冊:fopen 到 fwrite 逐一解析

     編輯:C 語言入門

文件打開與關閉

函數用途關鍵參數/返回值
fopen(path, mode)打開文件mode: r/r+/w/w+/a/a+ 可加 b 表示二進制;返回 FILE* 或 NULL
fclose(fp)關閉文件,刷新緩衝區成功 0,失敗 EOF
freopen(path, mode, fp)重新關聯文件指針先關閉原文件,再打開新文件

格式化讀寫

  • fprintf(fp, fmt, ...):按格式寫入,返回寫入字節數。
  • fscanf(fp, fmt, ...):按格式讀取,返回成功賦值項數,EOF 表示失敗。

字符/行 讀寫

  • fgetc(fp) / getc(fp):讀一字符,返回 int(含 EOF)。
  • fputc(c, fp) / putc(c, fp):寫一字符。
  • fgets(buf, size, fp):讀一行(含換行),最多 size-1 字符,末尾加 \0。
  • fputs(str, fp):寫字符串(不含結尾 \0)。

二進制塊讀寫

  • fread(ptr, size, count, fp):讀 count 個 size 字節塊,返回實際讀到的塊數。
  • fwrite(ptr, size, count, fp):寫入,返回實際寫入塊數。

隨機訪問

  • fseek(fp, offset, whence):移動位置。whence: SEEK_SET/CUR/END。成功 0。
  • ftell(fp):返回當前位置(long)。
  • rewind(fp):回到開頭,等價 fseek(fp,0,SEEK_SET)。
  • fgetpos/fsetpos:用 fpos_t 記錄/恢復位置(支援大文件)。

緩衝區控制

  • setbuf(fp, buf):buf 為 NULL 時無緩衝,否則全緩衝(大小 BUFSIZ)。
  • setvbuf(fp, buf, mode, size):mode: _IOFBF(全)、_IOLBF(行)、_IONBF(無)。

錯誤與狀態

  • feof(fp):是否讀到文件尾(非零為真)。
  • ferror(fp):是否出錯。
  • clearerr(fp):清除錯誤/EOF 標記。
  • fileno(fp):獲取底層文件描述符。

臨時文件與其他

  • tmpfile():創建臨時二進制文件,關閉自動刪除。
  • mktemp(template):生成唯一文件名(模板以 XXXXXX 結尾)。
  • ungetc(c, fp):將字符推回流,下次讀取可得。

最佳實踐提醒

  1. fopen 後必須檢查 NULL。
  2. 讀寫錯誤用 ferror/feof 區分。
  3. 二進制模式跨平台更安全。
  4. 大文件用 fgetpos/fsetpos 避免 long 溢出。
  5. 結束時 fclose 釋放資源。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved