C语言中scanf函数为什么无故返回-1?

我在使用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自动返回。。。。。

如此循环。