C语言文件读写常用函数总结
C語言文件讀寫常用函數總結
有點小頭疼這幾天復習,可是總是有些小可愛問有關C語言文件方面的內容,在此寫篇博文一勞永逸。
目錄
- C語言文件讀寫常用函數總結
- fopen函數
- fclose函數
- fseek函數
- fprintf函數
- fsanf函數
- feof函數
- fgetc函數
- fputc函數
- fwrite函數
- fread函數
fopen函數
- 頭文件:stdio.h
- 原型: FILE *fopen(const char *filename, const char *mode);
- 作用: 使用給定的模式 mode打開 filename 所指向的文件。
- 參數:
- filename: 所需打開文件的文件名。
- mode: 訪問模式。
- r :以只讀方式打開文件,該文件必須存在。
- r+:以讀/寫方式打開文件,該文件必須存在。
- rb+:以讀/寫方式打開一個二進制文件,只允許讀/寫數據。
- rt+:以讀/寫方式打開一個文本文件,允許讀和寫。
- w:打開只寫文件,若文件存在則文件長度清為零,即該文件內容會消失;若文件不存在則創建該文件。
- w+:打開可讀/寫文件,若文件存在則文件長度清為零,即該文件內容會消失;若文件不存在則創建該文件。
- a:以附加的方式打開只寫文件。若文件不存在,則會創建該文件;如果文件存在,則寫入的數據會被加到文件尾后,即文件原先的內容會被保留(EOF 符保留)。
- a+:以附加方式打開可讀/寫的文件。若文件不存在,則會創建該文件,如果文件存在,則寫入的數據會被加到文件尾后,即文件原先的內容會被保留(EOF符不保留)。
- wb:以只寫方式打開或新建一個二進制文件,只允許寫數據。
- wb+:以讀/寫方式打開或新建一個二進制文件,允許讀和寫。
- wt+:以讀/寫方式打開或新建一個文本文件,允許讀和寫。
- at+:以讀/寫方式打開一個文本文件,允許讀或在文本末追加數據。
- ab+:以讀/寫方式打開一個二進制文件,允許讀或在文件末追加數據。
| r | 以只讀方式打開文件,該文件必須存在。 |
| r+ | 以讀/寫方式打開文件,該文件必須存在。 |
| rb+ | 以讀/寫方式打開一個二進制文件,只允許讀/寫數據。 |
| rt+ | 以讀/寫方式打開一個文本文件,允許讀和寫。 |
| w | 打開只寫文件,若文件存在則文件長度清為零,即該文件內容會消失;若文件不存在則創建該文件。 |
| w+ | 打開可讀/寫文件,若文件存在則文件長度清為零,即該文件內容會消失;若文件不存在則創建該文件。 |
| a | 以附加的方式打開只寫文件。若文件不存在,則會創建該文件;如果文件存在,則寫入的數據會被加到文件尾后,即文件原先的內容會被保留(EOF 符保留)。 |
| a+ | 以附加方式打開可讀/寫的文件。若文件不存在,則會創建該文件,如果文件存在,則寫入的數據會被加到文件尾后,即文件原先的內容會被保留(EOF符不保留)。 |
| wb | 以只寫方式打開或新建一個二進制文件,只允許寫數據。 |
| wb+ | 以讀/寫方式打開或新建一個二進制文件,允許讀和寫。 |
| wt+ | 以讀/寫方式打開或新建一個文本文件,允許讀和寫。 |
| at+ | 以讀/寫方式打開一個文本文件,允許讀或在文本末追加數據。 |
| ab+ | 以讀/寫方式打開一個二進制文件,允許讀或在文件末追加數據。 |
- 返回值:
文件順利打開后,指向該流的文件指針就會被返回。如果文件打開失敗則返回 NULL,并把錯誤代碼存在error中。 - 運用
fclose函數
- 頭文件:stdio.h
- 原型: int fclose( FILE *fp );
- 作用: 把緩沖區內最后剩余的數據輸出到內核緩沖區,并釋放文件指針和有關的緩沖區。
- 參數:
- fp: 指向 FILE 對象的指針,該 FILE 對象指定了要被關閉的流
- 返回值:如果流成功關閉,fclose 返回 0,否則返回EOF(-1)。
- 運用:
fseek函數
- 頭文件:stdio.h
- 原型: int fseek(FILE *stream, long offset, int fromwhere);
- 作用: 重定位流(數據流/文件)上的文件內部位置指針
- 注意:文件指針指向文件/流。位置指針指向文件內部的字節位置,隨著文件的讀取會移動,文件指針如果不重新賦值將不會改變或指向別的文件。
- 參數:
- stream:文件指針
- offset:偏移量,正數表示正向偏移,負數表示負向偏移
- origin:設定從文件的哪里開始偏移,可能取值為:SEEK_CUR、 SEEK_END 或 SEEK_SET
- SEEK_SET: 文件開頭
- SEEK_CUR: 當前位置
- SEEK_END: 文件結尾
其中SEEK_SET,SEEK_CUR和SEEK_END對應數字依次為0,1和2.
- 返回值:成功,返回0,失敗返回非0值,并設置error的值,可以用perror()函數輸出錯誤。
- 運用
fprintf函數
-
頭文件:stdio.h
-
原型: int fprintf (FILE* stream, const char*format, [argument])
-
作用: 根據指定的格式(format),向輸出流(stream)寫入數據(argument)(和printf差不多,多了第一個參數,找到文件,printf是輸出東西到你的黑框框里面,這個是寫到文件里面)
-
注意:fprintf( )會根據參數format 字符串來轉換并格式化數據,然后將結果輸出到參數stream 指定的文件中,直到出現字符串結束(’\0’)為止。
-
參數:
- stream :指向 FILE 對象的指針,該 FILE 對象標識了流。
- format : C 字符串,包含了要被寫入到流 stream 中的文本。它可以包含嵌入的 format 標簽,format 標簽可被隨后的附加參數中指定的值替換,并按需求進行格式化。
- [argument]:附加參數列表
-
運用
fsanf函數
-
頭文件:stdio.h
-
原型: int fscanf(FILE *stream, char *format[,argument…]);
-
作用: 從一個流中執行格式化輸入,fscanf遇到空格和換行時結束,注意空格時也結束。這與fgets有區別,fgets遇到空格不結束。(和sanf類似不過多了第一個參數用來找文件,scanf需要我們從鍵盤輸入,fscanf文件里面的內容相當于我們鍵盤輸入的內容)
-
返回值:整型,成功返回讀入的參數的個數,失敗返回EOF(-1)。
-
運用
feof函數
- 頭文件:stdio.h
- 原型: int feof(FILE *stream);
- 參數: 指向 FILE 對象的指針。
- 作用: 判斷是否到達文件末尾
- 返回值:如果文件結束,則返回非0值,否則返回0,
fgetc函數
- 頭文件:stdio.h
- 原型: int fgetc(FILE *stream)
- 參數: 指向 FILE 對象的指針。
- 作用: 從文件指針stream指向的文件中讀取一個字符,讀取一個字節后,光標位置后移一個字節。
- 返回值:該字符對應的ascll碼。如果讀到文件末尾或者讀取出錯時返回EOF
fputc函數
- 頭文件:stdio.h
- 原型: int fputs(const char *s,FILE * stream)
- 參數:
- stream: 指向 FILE 對象的指針。
- s: 寫入文件的字符
- 作用: 向文件中寫入一個字符或一個字節的數據,文件內部寫指針會自動后移一個字節的位置。
- 返回值:返回寫入文件的字符的ASCII碼值,出錯時,返回EOF
fwrite函數
- 頭文件:stdio.h
- 原型: size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
- 作用: 把ptr所指向的數組中的數據寫入到給定流stream中。
- 參數:
- ptr: 這是指向要被寫入的元素數組的指針,獲取數據地址。
- size: 這是要被寫入的每個元素的大小,以字節為單位。
- nmemb: 這是元素的個數,每個元素的大小為 size 字節。
- stream: 這是指向 FILE 對象的指針,該 FILE 對象指定了一個輸出流。
- 返回值:如果成功,該函數返回一個 size_t 對象,表示元素的總數,該對象是一個整型數據類型。如果該數字與 nmemb 參數不同,則會顯示一個錯誤。
fread函數
-
頭文件:stdio.h
-
原型: size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
-
作用: 從給定輸入流stream讀取最多count個對象到數組buffer中(相當于對每個對象調用size次fgetc),把buffer當作unsigned char數組并順序保存結果。(也就是從文件中讀取內容)
-
注意: fread不區分文件尾和錯誤,因此調用者必須用feof和ferror才能判斷發生了什么。
-
參數:
- buffer:
指向要讀取的數組中首個對象的指針 - size
每個對象的大小(單位是字節) - count
要讀取的對象個數 - stream
輸入流
- buffer:
-
返回值:返回成功讀取的對象個數,若出現錯誤或到達文件末尾,則可能小于count。
若size或count為零,則fread返回零且不進行其他動作。 -
運用
不夠完整還請見諒,若有錯誤,還請指正。希望對你有所幫助,昂!!!
總結
以上是生活随笔為你收集整理的C语言文件读写常用函数总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言位运算,醍醐灌顶式教学
- 下一篇: 简单易懂的 pwnable.kr 第二题