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);
讀寫操作後,文件內部指針會自動後移。