文件讀寫操作

fopen

函數原型:FILE * fopen ( const char * filename, const char * mode );
返回值:文件順利打開後,指向該流的文件指針就會被返回。如果文件打開失敗則返回NULL,並把錯誤代碼存在errno中
參數:

mode 說明
“r” read,已只讀方式打開文件,文件必須存在
“w” write,打開只寫文件,若文件已存在,清空內容,否則,新建文件
“a” append,以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。
“r+” read/update,以可讀寫方式打開文件,該文件必須存在
“w+” write/update,打開可讀寫文件,若文件已存在,清空內容,否則,新建文件
“a+” append/update,以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。

*注:上述方法以文本方式打開,要以二進制方法打開,可用”rb”, “wb”, “ab”, “r+b”, “w+b”, “a+b”,+號可放在b後,如”rb+”, “wb+”, “ab+”

打開文件後,應作錯誤判斷和處理:

FILE* fp = fopen("1.txt", "r");
if (fp == NULL) {
    printf("1.txt fopen return NULL, error=%d\n", errno);
}

errno含義表
fopen - C++ Reference


fread

函數原型:size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
返回值:實際讀取的元素個數。如果返回值與count不相同,則可能文件結尾或發生錯誤。
參數:
size 要讀的每個數據項的字節數,單位是字節
count 要讀count個數據項

fwrite

函數原型:size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
返回值:實際寫入的數據項個數count

  • 寫入換行:fwrite("\r\n", 2, 1, fp);

  • 寫入數字:
    (1)用文本模式打開文件,而不是二進制;
    (2)用itoa等格式化數字爲字符串,然後用fwrite;
    (3)或者用fprintf直接輸出字符串,如:fprintf(fp,"%d", 12);

  • 讀寫操作後,文件內部指針會自動後移。

fread - C++ Reference
fwrite - C++ Reference

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章