【发布时间】:2016-12-05 11:40:16
【问题描述】:
仅当用户在两种情况下按下“Enter”时程序才会继续。但我的程序根本不等待用户按“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 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);
【问题讨论】:
-
使用 fgets 从键盘读取,使用 atoi 进行转换。 scanf 也将 ENTER 存储在缓冲区(stdin)中,缓冲区在对 scanf 的调用之间共享
-
因为您在数字后按下的 Enter 键作为换行符被放入输入缓冲区,
"%c"格式将读取。 -
scanf("%c",&c1);->scanf(" %c",&c1);(注意空格) -
请查看
while(c1 != '\n' && c1 != EOF);,因为这些循环会挂起(没有任何变化)。 -
请不要更正发布的代码 - 这会使问题变得毫无意义。