gpt4 book ai didi

c - null 终止一个字符串

转载 作者:太空狗 更新时间:2023-10-29 16:23:34 24 4
gpt4 key购买 nike

海湾合作委员会 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;
}

另一个问题:我特意把null终止的那一行注释掉了。但是,它仍然正确地打印出了 dest 的内容。此函数的调用者将通过是否包含 NULL 来发送字符串的长度。即 strlen(src) + 1STLen(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;
}

最佳答案

第一个问题:我会接受 Paul R 的评论并以 '\0' 结束。但是值 0 本身也可以正常工作。品味问题。但是不要使用用于指针的 MACRO NULL

第二个问题:如果您的字符串未以 \0 结尾,它可能仍会打印预期的输出,因为您的字符串后面是您内存中的不可打印字符。不过,这是一个非常讨厌的错误,因为它可能会在您意想不到的时候爆炸。 始终'\0' 终止字符串。

关于c - null 终止一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2911089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com