gpt4 book ai didi

c - 为什么 'K'的输出个数比输入的字符多?

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

输入输出字符数不一样吗?

int ch;

while(ch != '\n')
{
ch = getchar();
putchar('K');
}

最佳答案

其他人提到您正在访问一个未初始化的变量,这会导致未定义的行为。但即使您初始化它,问题是您在使用 getchar() 读取字符之前测试变量 ch 。所以计数会减 1。

假设您键入 1\n。第一次迭代会将 ch 的初始值与 '\n' 进行比较。它们不匹配,所以它执行

ch = getchar();
putchar('K');

打印了 1 K。然后它将 ch 的新值与 '\n' 进行比较。由于ch == '1',它们不匹配,所以它再次执行循环体。这会将换行符读入 ch,并打印第二个 K

然后它重复循环。这次测试 ch != '\n' 失败,因此循环停止。

打印的 K 个字符数是您键入的字符数,包括换行符。

解决此问题的一种方法是在循环之前调用一次getchar()

int ch = getchar();
while (ch != '\n' && ch != EOF) {
putchar('K');
ch = getchar();
}

请注意,您需要将 ch 声明为 int 变量,以便您可以正确地将它与 EOF 进行比较。

关于c - 为什么 'K'的输出个数比输入的字符多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57010186/

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