常用的檔案讀寫函式

2021-08-13 09:38:49 字數 2533 閱讀 2985

一、函式原型

file *fopen(const char *path, const char *mode);

功能:開啟乙個檔案(如果路徑下無此檔案,會新建立乙個)

引數:path:檔案路徑 mode:開啟方式,有(w,w+,r,r+,a,a+)

w:開啟只寫檔案,若檔案存在,則清空檔案內容,進行寫。檔案不存在則建立檔案

w+:開啟可讀寫檔案,若檔案存在,則清空檔案內容,進行寫。檔案不存在則建立檔案

r:以唯讀方式開啟,該檔案必須存在

r+:開啟可讀寫寫檔案

a:若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾,(不會清空檔案內容,eof保留)

a+:若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾,(不會清空檔案內容,eof不保留)

上述都可以加b,如rb,wb,ab,表示以二進位制開啟檔案

擴充:二進位制和文字模式的區別

1、在windows

系統中,文字模式下,檔案以"\r\n"代表換行。若以文字模式開啟檔案,並用 fputs 等函式寫入換行符"\n"時,函式會自動在"\n"前面加上"\r"。即實際寫入檔案的是"\r\n"。

2、在類 unix/linux 系統中文字模式下,檔案以"\n"代表換行。所以 linux 系統中在文字模式和二進位制模式下並無區別。

返回值:成功開啟返回目標檔案指標,失敗返回空指標 (所以每次開啟之後,進行判斷,如果失敗,就不可以進行後面的操作)

size_t fread(void *ptr, size_t size, size_t nmemb, file *stream);

功能:從檔案流中讀資料

,引數:ptr:儲存資料的指標 size:資料型別的大小 nmemb:資料的個數  stream:檔案指標

返回值: 返回值為讀入資料個數也就是nmemb,讀取失敗則返回0

size_t fwrite(const void *ptr, size_t size, size_t nmemb,file *stream);

功能:給檔案流寫入資料

引數:ptr:寫入資料的指標 size:資料型別的大小 nmemb:資料的個數 stream:檔案指標

返回值: 返回值為寫入資料個數也就是nmemb,失敗返回0

int fseek(file *stream, long offset, int whence);

功能:重定位流(資料流

/檔案)上的檔案內部位置指標

引數:stream:檔案指標 offset:偏移位置(正數表示正向偏移,負數表示負向偏移)  whence:基準,可能取值為seek_cur、 seek_end 或 seek_set

seek_set: 檔案開頭

seek_cur: 當前位置

seek_end: 檔案結尾

其中seek_set,seek_cur和seek_end依次為0,1和2,即在使用的時候可以直接數字,和寫巨集的意義是一樣的

返回值:執行成功,返回0,否則返回非0值

long ftell(file *stream);

功能:返回當前檔案

位置引數:stream:檔案指標

返回值:因為返回值是long ,long的大小是即2.1g以上的檔案操作時可能出錯

二、注意事項

fopen()用完之後一定要關閉,即fclose(),順便提一下malloc(),後也要及時的free(),因為如果不及時釋放資源,就會造成資源洩漏或者記憶體洩漏,這是非常嚴重和麻煩的錯誤,因為通常情況下機器是一直在執行,這種資源或者記憶體洩漏隨著時間推移,並且不容易發現,問題會越來越嚴重,最終導致宕機。所以要養成良好的程式設計習慣,記著配對使用。

三、運用例項

#include#includevoid testfseek()

void testfwrite()

const char* s = "hello i/o!\n";

size_t ret = fwrite(a,sizeof(char),strlen(s),fp);

fclose(fp);//一定要關 防止資源洩漏

}void testfread()

const char* s = "hello i/o!\n";

char a[1024]=;

size_t ret = fread(a,sizeof(char),strlen(s),fp);

if(ret>0)

fclose(fp);//一定要關 防止資源洩漏

}int main()

擴充套件:在windows系統下

1、使用二進位制方式進行讀檔案時,會原封不動的讀出全部的內容,寫檔案的時候,會把記憶體緩衝區的內容原封不動的寫到檔案中。

2、使用文字方式進行讀檔案時,會將回車換行符號crlf(0x0d oxoa)全部轉換成單個的換行符號lf(oxoa),寫檔案的時候,會將換行符號lf( oxoa)全部轉換成回車換行符號crlf(0x0d oxoa)。

C語言檔案讀寫常用函式

檔案讀寫 檔案的分類 文字檔案 儲存的是ascii碼的二進位制 2 5 5 二進位制檔案 儲存的是資料的補碼 11111111 檔案io file fopen const char path,const char mode 功能 開啟或者建立檔案 path 檔案路徑 mode 開啟模式 r 以唯讀許...

C語言常用檔案讀寫函式記錄

由於在vs下開發,經常使用mfc的類庫,檔案讀寫也是cfile的類級派生類,現在此記錄c語言檔案操作常用api,以備不時之需。1 fopen,fclose 檔案開啟關閉函式 file pfile fopen test.txt w 第乙個引數是開啟的檔名稱,第二個為開啟檔案的方式,方式有很多,在此不列...

檔案讀寫操作的函式

筆記 include include include include intopen const char pathname,int flags intopen const char pathname,int flags,mode t mode int creat const char pathna...