gcc 4.4.4 c89
Каков стандартный способ для нулевого завершения строки? Когда я использую NULL, я получаю предупреждающее сообщение.
*dest++ = 0;
*dest++ = '\0';
*dest++ = NULL; /* Warning: Assignment takes integer from pointer without a cast */
Исходный код:
size_t s_strscpy(char *dest, const char *src, const size_t len)
{
/* Copy the contents from src to dest */
size_t i = 0;
for(i = 0; i < len; i++)
*dest++ = *src++;
/* Null terminate dest */
*dest++ = 0;
return i;
}
Другой вопрос: я намеренно прокомментировал строку, которая завершает нуль. Тем не менее, он все еще правильно распечатывает содержимое dest. Вызыватель этой функции отправил бы длину строки либо включив NULL, либо нет. то есть strlen(src) + 1 или stlen(src).
size_t s_strscpy(char *dest, const char *src, const size_t len)
{
/* Copy the contents from src to dest */
size_t i = 0;
/* Don't copy the null terminator */
for(i = 0; i < len - 1; i++)
*dest++ = *src++;
/* Don't add the Null terminator */
/* *dest++ = 0; */
return i;
}