V1075. The function expects the file to be opened in one mode, but it was opened in different mode.
Анализатор обнаружил ситуацию, при которой файл был открыт в одном режиме, но вызываемая функция ожидает, что он будет находиться в другом.
Например, файл был открыт в режиме только для записи, но он используется для чтения:
bool read_file(void *ptr, size_t len)
{
FILE *file = fopen("file.txt", "wb"); // <=
if (file != NULL)
{
bool ok = fread(ptr, len, 1, file) == 1;
fclose(file);
return ok;
}
return false;
}
Скорее всего, это опечатка. Для исправления следует использовать правильный режим:
bool read_file(void *ptr, size_t len)
{
FILE *file = fopen("file.txt", "rb"); // <=
if (file != NULL)
{
bool ok = fread(ptr, len, 1, file) == 1;
fclose(file);
return ok;
}
return false;
}
Также возможна ситуация, когда происходит запись в закрытый файл:
void do_something_with_file(FILE* file)
{
// ....
fclose(file);
}
void foo(void)
{
FILE *file = fopen("file.txt", "w");
if (file != NULL)
{
do_something_with_file(file);
fprintf(file, "writing additional data\n");
}
}
Следует проверить корректность такого использования ресурсов в программе и исправить проблему.
Взгляните на примеры ошибок, обнаруженных с помощью диагностики V1075. |