主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

写入只读资源

文件最初以只读方式打开后被修改。

描述

此错误发生在您尝试向之前以只读模式打开的文件写入数据时。

例如,您使用访问模式参量 r 打开文件 fopen。您可以使用 fprintf 系列函数向该文件写入内容。

风险

向只读文件写入数据会导致未定义行为。

修复

如果您想向文件写入数据,请以适合写入的模式打开该文件。

示例

全部展开

#include <stdio.h>

void func(void) {
    FILE* fp ;

    fp = fopen("file.txt", "r");
    fprintf(fp, "Some data");
    fclose(fp);
}

在此示例中,文件 file.txt 以只读模式打开。当与 file.txt 相关联的 FILE 指针用作 fprintf 的参量时,会发生写入只读资源缺陷。

更正 - 以可写方式打开文件

一种可能的更正是使用访问修饰符 "a" 代替 "r"file.txt 现在在文件末尾开放输出。

#include <stdio.h>

void func(void) {
    FILE* fp ;

    fp = fopen("file.txt", "a");
    fprintf(fp, "Some data");
    fclose(fp);
}

结果信息

组:资源管理
语言:C | C++
默认值:手写代码时为启动,生成代码时为关闭
命令行语法:READ_ONLY_RESOURCE_WRITE
影响

版本历史记录

在 R2015b 中推出