﻿# 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:

```cpp
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:

```cpp
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:

```cpp
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\.