gpt4 book ai didi

c - 在 strncpy 或类似工具上使用 memcpy 是不好的做法吗?

转载 作者:太空宇宙 更新时间:2023-11-04 06:19:34 26 4
gpt4 key购买 nike

在缓冲区之间移动字符串时,我经常将 char* 视为数据缓冲区,并且不使用任何字符串缓冲区(strncpystrncat , ETC)。示例:

memcpy(target, src, strlen(src) + 1) // after buffer size checks
//vs
strncpy(target, src, target_size - 1);
target[target_size - 1] = 0;

这是一种不好的做法吗?

编辑:我知道区别,这不是重复,而是标准做法的问题。

最佳答案

使用

memcpy(target, src, strlen(src) + 1) // after buffer size checks

可能涉及遍历字符串两次——一次在 strlen 中,一次在 memcpy 中。如果您使用 strcpy,您的性能会受到很小的影响。

如果您出于不相关的原因计算字符串的长度,或者从其他资源中获取字符串的长度,我不清楚 memcpystrncpy 好还是差>.

如果你因为其他原因不计算字符串的长度,或者没有来自其他资源的字符串长度,最好使用 strcpy 而不是 memcpystrncpy.

关于c - 在 strncpy 或类似工具上使用 memcpy 是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38255212/

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