# 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.