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;
}