gpt4 book ai didi

c - 在没有 strlcpy 的平台上,strlcpy 相当于 strncpy

转载 作者:行者123 更新时间:2023-11-30 16:48:23 26 4
gpt4 key购买 nike

我知道,在从源字符数组复制到目标字符数组(我们希望目标以 null 结尾)时,strlcpystrncpy 更安全,下面的包装可以吗?

size_t strlcpy(char *dst, const char *src, size_t size) {
if (size != 0) {
int maxSize = size - 1;
int currSize = -1;
while ((++currSize < maxSize) && (*dst++ = *src++));
*dst = 0;
return currSize;
}
return 0;
}

请评论。

最佳答案

检查 size 是否大于零是有误导性的,因为 size_t 是无符号的。更具可读性的检查是 if (size != 0) ...

另一个问题是,strncpy 将其目的地用零填充到 s,而 strlcpy 则不会这样做。如果您想匹配 strlcpy 的行为,请在不可用的系统上编写您自己的实现,而不是依赖 strncpy

关于c - 在没有 strlcpy 的平台上,strlcpy 相当于 strncpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42971120/

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