gpt4 book ai didi

C strncpy 没有空终止的原因

转载 作者:行者123 更新时间:2023-11-30 18:45:28 24 4
gpt4 key购买 nike

我目前正在学习 C 中的字符串,出现了一个问题:为什么 C 开发人员不让 strncpy null 自动终止?

比如在strncpy的实现中,为什么做C语言的人不加上这一行:

// dest denotes the destination string

dest[n - 1] = '\0';

为了让strncpy更安全?

最佳答案

strncpy 从来没有打算成为 strcpy 的“安全替代品”,尽管这是许多新 C 程序员的印象,因为它确实需要“大小” “范围。第三个参数是从源缓冲区读取的字符数,而不是目标缓冲区的最大容量。

目前,在很少的用例中,strncpy 是将数据从一个缓冲区复制到另一个缓冲区的最佳选择。如果您确实需要 strcpy 的安全替代方案,您可以使用 snprintf,如下所示:

snprintf(dest, len_dest, "%s", src);

关于C strncpy 没有空终止的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54713243/

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