为什么我的程序没有在C中等待按键(“Enter”)呢

为什么我的程序没有在C中等待按键(“Enter”)呢,c,scanf,enter,C,Scanf,Enter,只有在两种情况下用户按下“回车”键,程序才会继续。但我的程序根本不等待用户按“回车”键,而是继续执行下一行代码 int T1 ,T2; char c1,c2; printf("Enter Temperature T1: "); scanf("%d",&T1); printf("Enter Temperature T2: "); scanf("%d",&T2); printf("Press Enter after setting temperature

只有在两种情况下用户按下“回车”键,程序才会继续。但我的程序根本不等待用户按“回车”键,而是继续执行下一行代码

  int T1 ,T2;
  char c1,c2;
  printf("Enter Temperature T1: ");
  scanf("%d",&T1);
  printf("Enter Temperature T2: ");
  scanf("%d",&T2);
  printf("Press Enter after setting temperature T1\n");
  scanf("%c",&c1);
  while(c1 != '\n' && c1 != EOF);
  printf("Press Enter after setting temperature T2\n");
  scanf("%c",&c2);
  while(c2 != '\n' && c2 != EOF);

首先,在代码> %c>代码> >代码>(SCANF(“%C”,和C1);)/>代码>之前,因为没有空白的格式读取下一个字符,即使它是空白,而空白的则跳过空白(包括换行符)并读取下一个不是空白的字符。


其次,我上面提到的
scanf
后面的while循环将挂起您的代码,因此如果您想执行第二个
printf
语句,请对其进行注释。

使用fgets从键盘读取,使用atoi进行转换。scanf还将ENTER存储在缓冲区(stdin)中,在调用scanf时共享缓冲区,因为您在将数字作为换行符放入输入缓冲区后按了ENTER键,
“%c”
格式将读取这些换行符。
scanf(“%c”和&c1)->
scanf(“%c”和&c1)(注意空格)请查看
,而(c1!='\n'&&c1!=EOF)太多,因为这些循环将挂起(没有任何更改)。请不要更正发布的代码-这会使问题变得毫无意义。因此,我在%c之前添加了空格,并将while循环重写为while(c1!='\n');现在我的代码挂起了。我该怎么办?谢谢你,请在我发表评论时发表评论。您的程序将成功运行。它仍然挂起。我真的不知道该怎么办。让所有的同时循环评论。最后一个while循环将在执行最后一个printf语句后挂起您的代码。