我在使用scanf时遇到了它不等待用户输入的问题,于是写了一个简单的测试程序:
char a[10];
while(1)
{
printf("Input:");
scanf("%s",a);
}
程序运行,scanf执行7次(不知为什么总是7次)后,scanf就不再等待输入了,界面就被"Input:"刷屏了。我看了下scanf的返回值,不能输入时返回的是-1。
然而,我在另一台电脑上,写同样的程序,运行正常,不会发生上面的问题。
为什么和电脑有关,是什么原因呢?
scanf("%s",a);
->
scanf("%s\n",a);
看看
应该是编译器的问题吧,scanf从输入流里读入数据,读入失败会返回-1,你每次输入都会按一次回车,但是scanf不读入回车,回车会滞留在输入流中可能造成堵塞,所以scanf返回-1
与你的“%s"已经所用的格式有关系。
如果读取到不符合指定格式的键入,scanf自动返回 -- 没有读取到回车为止。
下次再循环,仍然从此位置开始处理,仍然是读取到不符合指定格式的键入,scanf自动返回。。。。。
如此循环。