一、打开文件
FILE *fopen(const char *filename, const char *mode);
C++ 中的 fopen
是标准 C 库中的文件操作函数,用于打开文件并返回指向该文件的 FILE
指针,使用该函数前需要包含头文件 #include <stdio.h>
。它接收两个参数:
- 文件名:要打开的文件名,可以是绝对路径或相对路径。
- 模式:打开文件的模式,其中
mode
为下列模式之一: | 模式 | 描述 | |------|------| | "r" | 以只读方式打开文件。该文件必须存在 | | "w" | 以只写方式打开文件。如果文件不存在,则创建一个新文件;如果文件存在,则清空该文件 | | "a" | 以追加方式打开文件。如果文件不存在,则创建一个新文件;如果文件存在,则在文件末尾写入 | | "r+" | 以读写方式打开文件。该文件必须存在 | | "w+" | 以读写方式打开文件。如果文件不存在,则创建一个新文件;如果文件存在,则清空该文件 | | "a+" | 以读写方式打开文件。如果文件不存在,则创建一个新文件;如果文件存在,则在文件末尾写入 | 打开文件失败时,该函数将返回空指针NULL
。
二、读写文件
使用 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);
使用 fopen
函数成功打开文件之后,应该尽快关闭该文件,避免该文件继续被占用。
fclose
函数被用来关闭指定的数据流,并释放与该流相关的所有资源。如果调用成功,则返回值为 0;如果失败,则返回 EOF
。
四、代码示例
#include <stdio.h>
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;
}