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, возникает дефект ресурса Writing to read-only.

Коррекция - открыть файл как доступный для записи

Одной из возможных коррекций является использование спецификатора доступа "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++
По умолчанию: On для рукописного кода, off для сгенерированного кода
Синтаксис командной строки: READ_ONLY_RESOURCE_WRITE
Влияние: Высокий
Введенный в R2015b