Unicorn with delicious cookie
Nous utilisons des cookies pour améliorer votre expérience de navigation. En savoir plus
Accepter
to the top
>
>
>
V1075. The function expects the file...
menu mobile close menu
Additional information
toggle menu Contents

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

26 Aoû 2021

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.