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