Strlcpy
strlcpy и strlcat — нестандартные функции, созданные в качестве замены часто используемых некорректным образом аналогов стандартной библиотеки языка программирования Си для копирования содержимого нуль-терминированной строки в буфер ограниченного размера с защитой от переполнения буфера.
ОписаниеПрототипы, описанные в заголовочном файле
Функция Возвращаемое значение
Пример использования#include <string.h>
#include <stdio.h> /* для printf() */
char buf[10]; // буфер размером меньше строки
int main(void)
{
const char *str = "образец строки";
size_t sz;
buf[9] = '\0'; // избыточная инициализация для отладочной печати
printf("строка: \"%s\"\n\n", str);
printf("буфер перед копированием: \"%s\"\n", buf);
sz = strlcpy(buf, str, sizeof(buf));
if (sz >= sizeof(buf))
printf("обнаружено усечение строки с %zu до %lu символов !\n", sz, sizeof(buf)-1);
printf("буфер после копирования: \"%s\"\n", buf);
return 0;
}
Вывод: строка: "образец строки" буфер перед копированием: "" обнаружено усечение строки с 14 до 9 символов ! буфер после копирования: "образец с" (строка при копировании была усечена до размера буфера — 9 символов + нулевой) Ссылки
|