首页 > 解决方案 > 为什么“K”个数的输出多于输入字符?

问题描述

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

int ch;

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

标签: cwhile-loopgetcharputchar

解决方案


变量ch未初始化。因此,while 循环中的初始条件具有未定义的行为,因为变量ch具有不确定的值。

按以下方式更改代码片段

int ch;

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

请注意,它ch被声明为具有 type intchar否则,如果编译器将该类型作为类型处理,则代码将无法工作unsigned char

至于你的问题

Why output of number of 'K' are more than the input characters?

然后你首先输出输入的字符,然后才在 while 语句的条件下检查它。因此,如果不将换行符算作输入字符,则输出字符将比输入字符大一。


推荐阅读