gpt4 book ai didi

c - C 中的 Memmove() 打印结果两次

转载 作者:行者123 更新时间:2023-11-30 17:02:43 25 4
gpt4 key购买 nike

我正在玩 memmove,我了解它是如何工作的。但每当最终结果包含的内容超过原始源大小时,它就会打印出一堆随机数。例如:

char str[] = "abcdefgh";
memmove(str + 6, str + 3, 4);
printf("%s\n", str);

在应该给我时给我输出abcdefdefgbdefgghabcdefdefg为什么其他字符被添加到str中?

最佳答案

memmove(void *destination, void *source, size_t bytesToCopy)

添加到字符串中的其他字符是超出声明的 char str[] 内存位置的字符。您已经超出了 memmove 中的缓冲区地址,并且“\0”的终止字符已被覆盖。因此,当您调用 printf 时,该函数将继续打印指针引用的字符,直到遇到 '\0'。

关于c - C 中的 Memmove() 打印结果两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36466391/

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