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