日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言 fopen、fwrite、fread、fclose函数(打开文件进行读写覆盖或追加)

發布時間:2025/3/20 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 字符串,包含了文件訪問模式,模式如下:
模式 描述 "r" 打開一個用于讀取的文件。該文件必須存在。 "w" 創建一個用于寫入的空文件。如果文件名稱與已存在的文件相同,則會刪除已有文件的內容,文件被視為一個新的空文件。 "a" 追加到一個文件。寫操作向文件末尾追加數據。如果文件不存在,則創建文件。 "r+" 打開一個用于更新的文件,可讀取也可寫入。該文件必須存在。 "w+" 創建一個用于讀寫的空文件。 "a+" 打開一個用于讀取和追加的文件。

如果是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() 函數的用法。
#include<stdio.h>int main () {FILE *fp;char str[] = "This is runoob.com";fp = fopen( "file.txt" , "w" );fwrite(str, sizeof(str) , 1, fp );fclose(fp);return(0); }

讓我們編譯并運行上面的程序,這將創建一個文件 file.txt,它的內容如下:

This is runoob.com
  • 現在讓我們使用下面的程序查看上面文件的內容:
#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 庫函數 - 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 runoob

fclose函數

描述

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函数(打开文件进行读写覆盖或追加)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。