# V1075. The function expects the file to be opened in one mode, but it was opened in different mode.

The analyzer detected a situation: a file was opened in one mode, but the called function expects it to be in the other.

For example, a file was opened in write-only mode, but it is used for reading:

    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;
    }

Most likely it's a typo. Use the correct mode to fix it:

    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;
    }

There also may be a situation when the fprintf function writes data into a closed file:

    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");
      }
    }

You should check the correctness of such use of resources in the program and fix the problem.

You can look at examples of errors detected by the V1075 diagnostic.