一、函式原型
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...