gpt4 book ai didi

c - 在 C 中打印字符串时出现无法解释的行为

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

以下代码按预期工作并输出 ABC:

#include <stdio.h>

void printString (char toPrint [100]);

int main()
{
char hello [100];
hello[0] = 'A';
hello[1] = 'B';
hello[2] = 'C';
hello[3] = '\0';

printString(hello);

}

void printString (char toPrint [100])
{
int i = 0;

while (toPrint[i] != '\0')
{
printf("%c", toPrint[i]);
++i;
}

}

但是如果我删除添加空字符的行

  hallo[3] = '\0';

我得到随机输出,例如 wBCÇL、╗BCÄL、┬BCNL 等。

为什么会这样呢?我期望 printString() 中的循环永远运行,因为它不会遇到 '\0',但是 'A'、'B' 和 'C' 发生了什么?为什么 B 和 C 仍然出现在输出中,但 A 被一些随机字符替换?

最佳答案

您的 hello 声明使其未初始化并填充随机字节

int main()
{
char hello [100];
...
}

如果您想要零初始化数组,请使用

int main()
{
char hello [100] = {0};
...
}

关于c - 在 C 中打印字符串时出现无法解释的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59657647/

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