gpt4 book ai didi

检查缓冲区大小/strncpy

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

我敢肯定以下这个问题已经被问了很多,但顺便问一下,因为我还没有找到答案。

我必须重新创建函数 strncpy(我不需要/不想要任何解决方案)并且我无法重现此函数的确切行为。

这是我的代码:

int main(void)

{

char dest1[15];

char dest2[15];

char *src = "abcdefgh";

size_t n = 16;

putstr(strncpy(dest1, src, n);
// the output is : [1] 23975 abort ./a.out

putstr(ft_strncpy(dest2, src, n);
// the output is : abcde[1] 23975 abort ./a.out

return (0);

}

我认为函数 strncpy 检查 dest1 缓冲区的大小,并在返回之前将其与 n 进行比较。

函数ft_strncpy是我的函数,strncpy的拷贝。

如何在我的函数中检查缓冲区 dest2 的大小?它不适用于 dest2++(无限循环)或 dest2[index](返回 0);

编辑:删除了 dest1 和 dest2 的星星。并添加了对什么是 ft_strncpy 的解释。

最佳答案

至于你的问题。您无法检查目的地的大小。你所拥有的只是一个指针,仅此而已。您必须依赖源字符串或长度小于目标指针指向的内存。

另请记住,您不能依赖目的地的内容。其内容可能未初始化,因此不确定。数组或内存通常没有终止符。字符串终止符是一个约定,而不是语言强制执行的东西。

关于检查缓冲区大小/strncpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40463222/

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