C 而在一个循环中循环打印两次

C 而在一个循环中循环打印两次,c,C,所以我有一个小while循环,它似乎在一次运行中打印我的文本两次 下面是代码: int main(void){ char cont; int check = 1; while(check == 1){ printf("Something"); cont = getchar(); if(cont == 'j') check = 1; } } 现在这个的输出是: 现在它正在等待输入 某物,某物,等待输入 在第一次打印后,当我按j时,它将打印两次 这是为什么?您按下“j

所以我有一个小while循环,它似乎在一次运行中打印我的文本两次

下面是代码:

int main(void){
 char cont;
 int check = 1;

 while(check == 1){
  printf("Something");
  cont = getchar();
  if(cont == 'j')
   check = 1;
  }
}
现在这个的输出是:

现在它正在等待输入 某物,某物,等待输入

在第一次打印后,当我按j时,它将打印两次


这是为什么?

您按下“j”和“换行符”,所以您键入了两个字符,循环执行两次,然后开始读取下一行。

这是一个无限循环。始终重新检查您的程序

也许你想要

if(cont == 'j')
    check = 0;

您的代码被困在循环中,因为您测试check==1,并且check始终为1 你可以把另一部分做出来

if(cont == 'j')
   check = 1;
else 
   check =0;

+一个好的答案,不知道为什么投反对票。也许可以添加一些关于stdin缓冲特性的内容?