c语言 fopen、fwrite、fread、fclose函数(打开文件进行读写覆盖或追加)
文章目錄
- fopen函數(shù)
- 描述
- 聲明
- 參數(shù)
- 返回值
- 實(shí)例
- fwrite函數(shù)
- 描述
- 聲明
- 參數(shù)
- 返回值
- 實(shí)例
- fread函數(shù)
- 描述
- 聲明
- 參數(shù)
- 返回值
- 實(shí)例
- fclose函數(shù)
- 描述
- 聲明
- 參數(shù)
- 返回值
- 實(shí)例
- 其余
fopen函數(shù)
描述
C 庫函數(shù) FILE *fopen(const char *filename, const char *mode) 使用給定的模式 mode 打開 filename 所指向的文件。
聲明
下面是 fopen() 函數(shù)的聲明。
FILE *fopen(const char *filename, const char *mode)參數(shù)
- filename – 這是 C 字符串,包含了要打開的文件名稱。
- mode – 這是 C 字符串,包含了文件訪問模式,模式如下:
如果是wb+,則表示以二進(jìn)制(讀寫)方式寫入,參考:fopen中w w+ wb區(qū)別
“rt” 只讀打開一個(gè)文本文件,只允許讀數(shù)據(jù)“wt” 只寫打開或建立一個(gè)文本文件,只允許寫數(shù)據(jù)“at” 追加打開一個(gè)文本文件,并在文件末尾寫數(shù)據(jù)“rb” 只讀打開一個(gè)二進(jìn)制文件,只允許讀數(shù)據(jù)“wb” 只寫打開或建立一個(gè)二進(jìn)制文件,只允許寫數(shù)據(jù)“ab” 追加打開一個(gè)二進(jìn)制文件,并在文件末尾寫數(shù)據(jù)“rt+” 讀寫打開一個(gè)文本文件,允許讀和寫“wt+” 讀寫打開或建立一個(gè)文本文件,允許讀寫“at+” 讀寫打開一個(gè)文本文件,允許讀,或在文件末追加數(shù)據(jù)“rb+” 讀寫打開一個(gè)二進(jìn)制文件,允許讀和寫“wb+” 讀寫打開或建立一個(gè)二進(jìn)制文件,允許讀和寫“ab+” 讀寫打開一個(gè)二進(jìn)制文件,允許讀,或在文件末追加數(shù)據(jù)對(duì)于文件使用方式有以下幾點(diǎn)說明:1. 文件使用方式由r,w,a,t,b,+六個(gè)字符拼成,各字符的含義是:r(read): 讀w(write): 寫a(append): 追加t(text): 文本文件,可省略不寫b(banary): 二進(jìn)制文件+: 讀和寫2. 凡用“r”打開一個(gè)文件時(shí),該文件必須已經(jīng)存在,且只能從該文件讀出。3. 用“w”打開的文件只能向該文件寫入。若打開的文件不存在,則以指定的文件名建立該文件,若打開的文件已經(jīng)存在,則將該文件刪去,重建一個(gè)新文件。4. 若要向一個(gè)已存在的文件追加新的信息,只能用“a ”方式打開文件。但此時(shí)該文件必須是存在的,否則將會(huì)出錯(cuò)。5. 在打開一個(gè)文件時(shí),如果出錯(cuò),fopen將返回一個(gè)空指針值NULL。在程序中可以用這一信息來判別是否完成打開文件的工作,并作相應(yīng)的處理。如果成功的打開一個(gè)文件, fopen()函數(shù)返回文件指針, 否則返回空指針(NULL)。由此可判斷文件打開是否成功。 fclose()函數(shù)用來關(guān)閉一個(gè)由fopen()函數(shù)打開的文件 , 其調(diào)用格式為:int fclose(FILE *stream);該函數(shù)返回一個(gè)整型數(shù)。當(dāng)文件關(guān)閉成功時(shí), 返回0, 否則返回一個(gè)非零值。可以根據(jù)函數(shù)的返回值判斷文件是否關(guān)閉成功。參考文章:fopen 參數(shù)講解
返回值
該函數(shù)返回一個(gè) FILE 指針。否則返回 NULL,且設(shè)置全局變量 errno 來標(biāo)識(shí)錯(cuò)誤。
實(shí)例
下面的實(shí)例演示了 fopen() 函數(shù)的用法。
#include <stdio.h> #include <stdlib.h>int main() {FILE * fp;fp = fopen ("file.txt", "w+");fprintf(fp, "%s %s %s %d", "We", "are", "in", 2014);fclose(fp);return(0); }讓我們編譯并運(yùn)行上面的程序,這將創(chuàng)建一個(gè)帶有一下內(nèi)容的文件 file.txt:
We are in 2014現(xiàn)在讓我們使用下面的程序查看上面文件的內(nèi)容:
#include <stdio.h>int main () {FILE *fp;int c;fp = fopen("file.txt","r");while(1){c = fgetc(fp);if( feof(fp) ){ break ;}printf("%c", c);}fclose(fp);return(0); }參考文章:C 庫函數(shù) - fopen()
fwrite函數(shù)
描述
C 庫函數(shù) size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) 把 ptr 所指向的數(shù)組中的數(shù)據(jù)寫入到給定流 stream 中。
聲明
下面是 fwrite() 函數(shù)的聲明。
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)參數(shù)
ptr -- 這是指向要被寫入的元素?cái)?shù)組的指針。 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ò)誤。
實(shí)例
- 下面的實(shí)例演示了 fwrite() 函數(shù)的用法。
讓我們編譯并運(yùn)行上面的程序,這將創(chuàng)建一個(gè)文件 file.txt,它的內(nèi)容如下:
This is runoob.com- 現(xiàn)在讓我們使用下面的程序查看上面文件的內(nèi)容:
參考文章:C 庫函數(shù) - fwrite()
fread函數(shù)
描述
C 庫函數(shù) size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream) 從給定流 stream 讀取數(shù)據(jù)到 ptr 所指向的數(shù)組中。
聲明
下面是 fread() 函數(shù)的聲明。
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)參數(shù)
ptr -- 這是指向帶有最小尺寸 size*nmemb 字節(jié)的內(nèi)存塊的指針。 size -- 這是要讀取的每個(gè)元素的大小,以字節(jié)為單位。 nmemb -- 這是元素的個(gè)數(shù),每個(gè)元素的大小為 size 字節(jié)。 stream -- 這是指向 FILE 對(duì)象的指針,該 FILE 對(duì)象指定了一個(gè)輸入流。返回值
成功讀取的元素總數(shù)會(huì)以 size_t 對(duì)象返回,size_t 對(duì)象是一個(gè)整型數(shù)據(jù)類型。如果總數(shù)與 nmemb 參數(shù)不同,則可能發(fā)生了一個(gè)錯(cuò)誤或者到達(dá)了文件末尾。
實(shí)例
下面的實(shí)例演示了 fread() 函數(shù)的用法。
#include <stdio.h> #include <string.h>int main() {FILE *fp;char c[] = "This is runoob";char buffer[20];/* 打開文件用于讀寫 */fp = fopen("file.txt", "w+");/* 寫入數(shù)據(jù)到文件 */fwrite(c, strlen(c) + 1, 1, fp);/* 查找文件的開頭 */fseek(fp, 0, SEEK_SET);/* 讀取并顯示數(shù)據(jù) */fread(buffer, strlen(c)+1, 1, fp);printf("%s\n", buffer);fclose(fp);return(0); }讓我們編譯并運(yùn)行上面的程序,這將創(chuàng)建一個(gè)文件 file.txt,然后寫入內(nèi)容 This is runoob。接下來我們使用 fseek() 函數(shù)來重置寫指針到文件的開頭,文件內(nèi)容如下所示:
This is runoobfclose函數(shù)
描述
C 庫函數(shù) int fclose(FILE *stream) 關(guān)閉流 stream。刷新所有的緩沖區(qū)。
聲明
下面是 fclose() 函數(shù)的聲明。
int fclose(FILE *stream)參數(shù)
- stream – 這是指向 FILE 對(duì)象的指針,該 FILE 對(duì)象指定了要被關(guān)閉的流。
返回值
如果流成功關(guān)閉,則該方法返回零。如果失敗,則返回 EOF。
實(shí)例
下面的實(shí)例演示了 fclose() 函數(shù)的用法。
#include <stdio.h>int main() {FILE *fp;fp = fopen("file.txt", "w");fprintf(fp, "%s", "這里是 runoob.com");fclose(fp);return(0); }讓我們編譯并運(yùn)行上面的程序,這將創(chuàng)建一個(gè)文件 file.txt,然后寫入下面的文本行,最后使用 fclose() 函數(shù)關(guān)閉文件。
這里是 runoob.com參考文章:C 庫函數(shù) - fclose()
其余
fwrite 和 fread函數(shù)的用法小結(jié)
總結(jié)
以上是生活随笔為你收集整理的c语言 fopen、fwrite、fread、fclose函数(打开文件进行读写覆盖或追加)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【视频基础】封装格式和编码格式
- 下一篇: C/C++ unsigned char*