﻿# V541\. String is printed into itself\. Consider inspecting the expression\.

Анализатор обнаружил потенциально возможную ошибку, связанную с печатью строки в саму себя\. Результат подобного действия может быть весьма неожиданным\.

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

```cpp
char s[100] = "test";
sprintf(s, "N = %d, S = %s", 123, s);
```

В примере буфер 's' одновременно используется как буфер под новую строку и как один из элементов, из которых формируется текст\. В результате работы этого кода хочется получить строку:

N \= 123, S \= test

Но на практике в буфере будет сформирована строка:

N \= 123, S \= N \= 123, S \=

В других ситуациях аналогичный код может привести не только к выводу некорректного текста, но и к переполнению буфера или аварийному завершению программы\. Код может быть исправлен, если использовать для сохранения результата новый буфер\.

Корректный код:

```cpp
char s1[100] = "test";
char s2[100];
sprintf(s2, "N = %d, S = %s", 123, s1);
```