千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > c++fopen的使用详解

c++fopen的使用详解

来源:千锋教育
发布人:xqq
时间: 2023-11-22 18:39:11 1700649551

一、打开文件


    FILE *fopen(const char *filename, const char *mode);

c++fopen是标准C库中的文件操作函数,用于打开文件并返回指向该文件的FILE指针,使用该函数前需要包含头文件#include 。它接收两个参数:

文件名:要打开的文件名,可以是绝对路径或相对路径。 模式:打开文件的模式,其中mode为下列模式之一:
模式 描述
"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;
}

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT