Лазаю по старому коду нашего сервера приложений, там было полно работы со строками в старом недобром стиле традиционного Си. Ну там: strcpy, strlen и прочие прелести.
Мама дорогая! Сколько ошибок, самых дурацких! Сколько кривостей, которые вот-вот сломаются!
Тут тебе и непонимание, что +1 к указателю это "плюс один элемент", а не "плюс один байт". Тут и memcpy без чётких проверок равенства размера принимающего и передающего буфера. Тут и strncpy без ручного закрытия нулём (ну не помнит народ, что эта функция при обрезке даёт незакрытую строку!). Тут и strcpy - без всяких гарантий отсутствия переполнения. Тут и буфера, статически и динамически выделяемые без символа под завершающий ноль. Тут и тяжёлая ненависть к оператору sizeof для указания размера буфера (мама, сколько я вычистил констант!). Тут и memcpy(buf, "строка", sizeof(buf)) - копирующий кусок мусора за пределами строковой константы и хорошо ещё не порождающий AV. И ещё несколько вполне диких конструкций.
Я в шоке. И ведь не ламеры какие, довольно опытные программеры писали.
Приличные классы строк рулят. Очень-очень сильно! Ибо нет функции более
ебанутой, нежели strncat.