﻿# V2606\. MISRA\. There should be no attempt to write to a stream that has been opened for reading\.

Данное диагностическое правило основано на руководстве [MISRA](https://www.misra.org.uk/) \(Motor Industry Software Reliability Association\) по разработке программного обеспечения\.

Это правило актуально только для С\. Стандарт C не определяет поведение, при котором происходит запись в файл, открытый только для чтения\. Поэтому такое поведение некорректно\.

Рассмотрим пример:

```cpp
void foo(void)
{
  FILE *file = fopen("file.txt", "r");
  if (file != NULL)
  {
    fputs(file, "I am writing to the read-only file\n");
    fclose(file);
  }
}
```

Файл file\.txt был открыт в режиме только для чтения, но при этом в него происходит запись\. Неизвестно, как поведет себя операционная система в этой ситуации\.

Скорее всего, это опечатка, и режим открытия стоит изменить:

```cpp
void foo(void)
{
  FILE *file = fopen("file.txt", "w");
  if (file != NULL)
  {
    fputs(file, "I am writing to the write-only file\n"); 
    fclose(file);
  }
}
```