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