c - 循环问题 - 重复指令两次而不是一次

标签 c loops for-loop char break

在这里学习C,我很困惑。

char ch;

for(;;)
{
    puts("Type a letter: ");
    ch=getchar();
    if(ch == '~')
    {
        break;
    }
}

为什么它会打印“键入字母”两次而不是一次?程序运行时是这样的:
输入一个字母:
一个
输入一个字母:
输入一个字母:
d
输入一个字母:
输入一个字母:
g

PS 同样的事情也会发生在 while 循环中。

最佳答案

您按“a”,然后按换行符(输入)。因此,您的代码将“a”作为第一个输入,将换行符作为第二个输入。所以它打印了该行两次。 你可以试试这个:

char ch;

for(;;)
{
    puts("Type a letter: ");
    ch=getchar();
    getchar(); //newly added line. This line will discard the newline
    if(ch == '~')
    {
        break;
    }
}

关于c - 循环问题 - 重复指令两次而不是一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50802035/

相关文章:

c - 如何使用 x86intrin.h

c - 尝试在C中使用宏

ruby - 有人可以澄清为什么循环中变量的值在循环关闭之前不会更新吗?

php - 在 PHP 中循环需要时间, fatal error : Maximum execution time of 120 seconds exceeded in

java - JSON 对象如果重复则不应添加

c - C 中的递归合并排序和内存分配

c - 意外的 pthread 函数输出

PHP mysqli 只显示一个用户

django - 如何在 Django 模板中进行 1 次迭代后中断 "for loop"

java - For 循环被跳过