From my 上一篇文章 https://stackoverflow.com/q/27297811/3429430,我知道 getchar() 仅当我们按 Enter 时才完成。让我们考虑一下这段代码:
#include<stdio.h>
main()
{
getchar();
getchar();
getchar();
getchar();
getchar();
}
我期望它像这样运行:我按某个 key1 然后按 Enter,然后按 key2 和 Enter,然后 key3 和 Enter,然后 key4 和 Enter,最后按 key5+Enter,程序现在应该终止。这并不是实际发生的情况。发生的情况是这样的:我按某个 key1,然后按 Enter,然后按 key2 和 Enter,然后按 key3 和 Enter,程序最终终止!
我观察到的另一个奇怪的事情是,如果我这样做:key1,key2,key3,key4+Enter,那么程序就会终止。例如。如果我连续按 q、w、e 和 r,然后按 Enter,程序就会终止。
- 为什么不是所有的 getchar() 都要求输入?这是否意味着 getchar() 将任何其他键作为 Enter ?那么下一个键是否会被作为下一个 getchar() 的输入呢?
让我们考虑另一个代码:
#include<stdio.h>
main()
{
int c=getchar();
int d=getchar();
int e=getchar();
printf("2 getchar are remaining\n");
int f=getchar();
int g=getchar();
printf(" c is %d, d is %d, e is %d, f is %d and g is %d",c,d,e,f,g);
}
我输入:ABCDEFG 然后回车。线路还剩 2 个 getchar应该在我按 C 或 D 时立即打印。但它最后打印,意味着所有 getchar() 同时执行 - 这很奇怪。
- 程序不是逐行执行的吗? IE。在第三次 getchar 之后, printf() 应该可以工作。但当所有 getchar() 都执行完毕后,它终于起作用了。