﻿# V692\. Inappropriate attempt to append a null character to a string\. To determine the length of a string by 'strlen' function correctly, use a string ending with a null terminator in the first place\.

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

Пример некорректного кода:

```cpp
char *linkname;
....
linkname[strlen(linkname)] = '\0';
```

Этот код не имеет смысла\. Ноль будет записан как раз в ту ячейку, где был найден 0\. При этом, функция strlen\(\) может выйти далеко за пределы буфера, что приведет неопределенному поведению программы\.

Чтобы исправить код, надо вычислить длину строки каким\-то другим способом:

```cpp
char *linkname;
size_t len;
....
linkname[len] = '\0';
```