为什么我的程序没有在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语句后挂起您的代码。