У меня есть код, в котором мне нужно заменить экземпляры 'memcpy' на 'strlcpy', так как это считается более безопасным, и, поскольку strlcpy обеспечивает завершение скопированной строки с нулевым значением, его предпочтительно использовать. Хотя оба выглядят одинаково, если посмотреть на сигнатуру обоих, за исключением того, что strlcpy возвращает размер скопированной строки:
void * memcpy ( void * destination, const void * source, size_t num );
size_t strlcpy(char *dst, const char *src, size_t size);
Могу ли я просто заменить экземпляр memcpy на strlcpy, оставив аргументы такими же, как в следующем выражении:
memcpy(buf + strlen(buf), ".*.", 3);
Учитывая, что strlcpy обеспечивает завершение NULL, необходимо ли изменить значение аргумента size на 4 или оставить его равным 3? Пожалуйста, предложите ваше мнение.