gpt4 book ai didi

c - 为什么下面的程序不打印相同的字符串两次?

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

我不明白为什么不能打印相同的字符串两次。这是示例代码

int main(void)
{
char *source = "duplicate message";
char *p1,*p2,destination[50];


p1 = source;
puts(p1);
p2=destination;
while(*p2++ =*p1++)
;
puts(p2);
return 0;
}

最佳答案

在循环结束时,您的p2 指向destination 字符串的末尾。此时的destination确实包含source的副本。但是您的 p2 并未指向 destination 的开头。它指向存储在destination中的复制字符串的末尾。 IE。 p2 指向一个空字符串。这就是您的第二个 puts 打印的内容 - 一个空字符串。

如果您想打印 destination 字符串,那么您应该在代码中编写该字符串 - puts(destination)。您为什么决定将其表达为 puts(p2)

如果你想尝试一下,你可以让你的p2在循环后指向destination中的不同位置。如果您使其指向 destination 的开头,puts (p2) 将打印整个 destination 字符串。如果您使其指向 destination 字符串的中间,则 puts (p2) 将打印类似 "ate message" 等内容.

关于c - 为什么下面的程序不打印相同的字符串两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25706073/

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