Я столкнулся с двумя популярными способами написать безопасную функцию копирования, которая является переносной и соответствует C89.Есть ли разница между strncat и strncpy для записи безопасной функции копирования строк?
Пример 1:
strncpy(dst, src, size);
dst[size - 1] = '\0';
Пример 2:
dst[0] = '\0'
strncat(dst, src, size - 1);
Мои вопросы:
- Есть ли какие-либо технические различия между этими двумя?
- Есть ли какие-либо специальные сценарии, где один предпочтительнее другого?
Определите «лучше» – Levi
Они оба гарантированно ведут себя одинаково, поэтому они оба лучше. –
Вы также можете попробовать snprintf, который даст вам немного более полезное возвращаемое значение, т. Е. Общее количество написанных символов. – bruceg