最全C語言文件操作談不上,C語言基礎教程之文件操作

C語言文件讀寫

最全C語言文件操作談不上,C語言基礎教程之文件操作

一個文件,無論它是文本文件還是二進制文件,都是代表了一系列的字節。C 語言不僅提供了訪問頂層的函數,也提供了底層(OS)調用來處理存儲設備上的文件。文件管理的基本流程如下:

  • 打開文件
  • 讀寫文件
  • 關閉文件

打開文件

最全C語言文件操作談不上,C語言基礎教程之文件操作

更多C/C++學習資料,請私信我“代碼”,即可獲取

您可以使用 fopen( ) 函數來創建一個新的文件或者打開一個已有的文件,這個調用會初始化類型 FILE 的一個對象,類型 FILE 包含了所有用來控制流的必要的信息。下面是這個函數調用的原型:

最全C語言文件操作談不上,C語言基礎教程之文件操作

更多C/C++學習資料,請私信我“代碼”,即可獲取

在這裡,filename 是字符串,用來命名文件,訪問模式mode 有一下取值情況:

最全C語言文件操作談不上,C語言基礎教程之文件操作

如果處理的是二進制文件,則需使用下面的訪問模式來取代上面的訪問模式:

"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"

關閉文件

為了關閉文件,請使用 fclose( ) 函數。函數的原型: int fclose( FILE *fp );

如果成功關閉文件,fclose( ) 函數返回零,如果關閉文件時發生錯誤,函數返回 EOF。這個函數實際上,會清空緩衝區中的數據,關閉文件,並釋放用於該文件的所有內存。EOF 是一個定義在頭文件 stdio.h 中的常量。C語言 標準庫提供了各種函數來按字符或者以固定長度字符串的形式讀寫文件。

寫入文件

字符的形式寫入:int fputc( int c, FILE *fp );

字符串的形式寫入:int fputs( const char *s, FILE *fp );

格式化寫入:int fprintf(FILE *fp,const char *format, ...)

最全C語言文件操作談不上,C語言基礎教程之文件操作

讀取文件

下面是從文件讀取單個字符的最簡單的函數:

字符的形式讀取:int fgetc(FILE *fp );

字符串的形式讀取:char *fgets( char *buf, int n, FILE *fp );

格式化讀取: int fscanf(FILE *fp, const char *format, ...);

最全C語言文件操作談不上,C語言基礎教程之文件操作

更多C/C++學習資料,請私信我“代碼”,即可獲取

二進制 I/O 函數

最全C語言文件操作談不上,C語言基礎教程之文件操作

更多C/C++學習資料,請私信我“代碼”,即可獲取

下面兩個函數用於二進制輸入和輸出:

最全C語言文件操作談不上,C語言基礎教程之文件操作

這兩個函數都是用於存儲塊的讀寫 - 通常是數組或結構體。

文件指針

移動文件指針到指定位置讀,或插入寫:int fseek(FILE *stream, long offset, int whence);

fseek 設置當前讀寫點到 offset 處, whence 可以是 SEEK_SET,SEEK_CUR,SEEK_END 這些值決定是從文件頭、當前點和文件尾計算偏移量 offset。

你可以定義一個文件指針 FILE *fp,當你打開一個文件時,文件指針指向開頭,你要指到多少個字節,只要控制偏移量就好,例如, 相對當前位置往後移動一個字節:fseek(fp,1,SEEK_CUR); 中間的值就是偏移量。 如果你要往前移動一個字節,直接改為負值就可以:fseek(fp,-1,SEEK_CUR)

將文件內部的位置指針重新指向一個流(數據流/文件)的開頭:void rewind(FILE *stream);

更多精彩


分享到:


相關文章: