Writing to read-only resource

Файл, первоначально открытый как только для чтения, изменяется

Описание

Этот дефект происходит, когда вы пытаетесь записать в файл, что вы открылись ранее в режиме только для чтения.

Например, вы открываете файл с помощью fopen с аргументом r режима доступа. Вы пишете в тот файл с функцией в fprintf семейство.

Риск

Запись в файл только для чтения вызывает неопределенное поведение.

Фиксация

Если вы хотите записать в файл, открыть файл в режиме, который подходит для записи.

Примеры

развернуть все

#include <stdio.h>

void func(void) {
    FILE* fp ;

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

В этом примере, файл file.txt открыт в режиме только для чтения. Когда FILE указатель сопоставлен с file.txt используется в качестве аргумента 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