本帖最后由 NenKeer 于 2014-5-1 20:23 编辑
实际上scanf()函数接收输入,并不是直接从键盘接收,而是动过输入流来接收数据,我们从键盘打的字符,都先被存在流中,如果流里面有东西,scanf()就会从里面取东西,而不需要在输入。- #include<stdio.h>
- int main(void)
- {
- int a;
- scanf("%d",&a); //输入“1space5enter”,遇到中间的space,第一个scanf函数结束,流内剩下5enter
- printf("%d\n",a);
- fflush(stdin); //解决这个问题的方法,可以加入调用这个函数,清空输入流的缓冲区,下一个scanf函数就需要键盘重新输入了
- int b;
- scanf("%d",&b); //如果不调用fflush函数,由于流内还有5enter,所以直接从流内读入,遇到enter,这个scnaf函数结束
- printf("%d %d\n",a,b);
- return 0;
- }
复制代码 |