﻿# V2600\. MISRA\. The standard input/output functions should not be used\.

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

Функции стандартной библиотеки из заголовочных файлов '<stdio\.h\>' / '<cstdio\>' и '<wchar\.h\>' могут быть опасны\. Их поведение зависит от реализации, а их использование может привести к неопределенному поведению\.

Рассмотрим следующий фрагмент кода:

```cpp
#include <stdio.h>

void InputFromFile(FILE *file); // Read from 'file'

void foo()
{
  FILE *stream;
  ....
  InputFromFile(stream);
  fflush(stream);
}
```

В коде сначала происходит чтение из потока 'stream', а затем поток передается в функцию 'fflush'\. Такая последовательность операций приводит к [неопределенному поведению](https://en.cppreference.com/w/c/io/fflush)\.

Анализатор выдаст предупреждение, если обнаружит использование любых функций, определенных в заголовочных файлах '<stdio\.h\>' / '<cstdio\>' и '<wchar\.h\>':

* fopen;
* fclose;
* freopen;
* fflush;
* setbuf;
* setvbuf;
* etc\.

Пример кода, на который анализатор выдаст предупреждение:

```cpp
#include <stdio.h>

void foo(const char *filename, FILE *oldFd)
{
  FILE *newFd = freopen(filename, "r", oldFd);
  ....
}
```