一、打開文件
FILE *fopen(const char *filename, const char *mode);
c++fopen是標準C庫中的文件操作函數,用于打開文件并返回指向該文件的FILE指針,使用該函數前需要包含頭文件#include
。它接收兩個參數:
模式 | 描述 |
---|---|
"r" | 以只讀方式打開文件。該文件必須存在 |
"w" | 以只寫方式打開文件。如果文件不存在,則創建一個新文件;如果文件存在,則清空該文件 |
"a" | 以追加方式打開文件。如果文件不存在,則創建一個新文件;如果文件存在,則在文件末尾寫入 |
"r+" | 以讀寫方式打開文件。該文件必須存在 |
"w+" | 以讀寫方式打開文件。如果文件不存在,則創建一個新文件;如果文件存在,則清空該文件 |
"a+" | 以讀寫方式打開文件。如果文件不存在,則創建一個新文件;如果文件存在,則在文件末尾寫入 |
打開文件失敗時,該函數將返回空指針NULL。
二、讀寫文件
c++fopen函數成功打開文件后,我們就可以對文件進行讀寫操作了。
1. 寫入數據
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
fwrite函數用于向打開的文件中寫入數據,它的參數解釋如下:
ptr:要寫入的數據的地址。 size:要寫入的每個數據項的大小(單位是字節)。 count:要寫入的數據項的個數。 stream:指向FILE對象的指針。函數的返回值為實際寫入到文件中的數據項的個數。如果沒有成功寫入任何項,則函數將返回0。
2. 讀取數據
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
fread函數用于從打開的文件中讀取數據,它的參數解釋如下:
ptr:被讀取數據的存儲地址。 size:每個數據項的大小(單位為字節)。 count:要讀取的數據項數。 stream:指向FILE對象的指針。函數的返回值為確切讀取到的數據項數。如果讀取失敗,例如讀到文件末尾或者發生了錯誤,函數將返回小于count的值。
三、關閉文件
int fclose(FILE *stream);
使用c++fopen函數成功打開文件之后,應該盡快關閉該文件,避免該文件繼續被占用。
fclose函數被用來關閉指定的數據流,并釋放與該流相關的所有資源。如果調用成功,則返回值為0;如果失敗,則返回EOF。
四、代碼示例
#include
int main()
{
FILE *fp = fopen("example.txt", "w");
if(fp == NULL)
{
printf("Failed to open file.\n");
return 1;
}
fprintf(fp, "Hello, World!\n");
fclose(fp);
char buffer[100];
fp = fopen("example.txt", "r");
if(fp == NULL)
{
printf("Failed to open file.\n");
return 1;
}
fread(buffer, sizeof(buffer), 1, fp);
printf("%s", buffer);
fclose(fp);
return 0;
}