gpt4 book ai didi

C: 字符串错误打印两次

转载 作者:行者123 更新时间:2023-12-04 00:51:14 25 4
gpt4 key购买 nike

我在下面的程序中使用 C 字符串:

#include <stdio.h>

int main(void){

char *player1 = "Harry";
char player2[] = "Rosie";
char player3[6] = "Ronald";

printf("%s %s %s\n", player1, player2, player3);
return 0;
}

打印以下内容:

Harry Rosie RonaldRosie

为什么“Rosie”打印了两次?

最佳答案

Ronald 有 6 个字母,因此 char player3[6] 没有为空终止符 '\0' 留空间。

在您的例子中,它打印内存中 Ronald 之后的所有内容,直到遇到 '\0'。那恰好是 Rosie。在找到 '\0' 之前,您可能并不总是那么幸运并遇到错误(例如内存保护)。

一个解决方案(除了初始化 HarryRosie 的方式)是将元素的数量增加一个,以便为尾随的 '\0 ':

char player3[7] = "Ronald";

关于C: 字符串错误打印两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66337618/

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