2 csdnqixiaoxin csdnqixiaoxin 于 2016.09.14 21:17 提问

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

我在使用scanf时遇到了它不等待用户输入的问题,于是写了一个简单的测试程序:

 char a[10];
 while(1)
 {
        printf("Input:");
        scanf("%s",a);
 }

程序运行,scanf执行7次(不知为什么总是7次)后,scanf就不再等待输入了,界面就被"Input:"刷屏了。我看了下scanf的返回值,不能输入时返回的是-1。
然而,我在另一台电脑上,写同样的程序,运行正常,不会发生上面的问题。
为什么和电脑有关,是什么原因呢?

2个回答

caozhy
caozhy   Ds   Rxr 2016.09.14 23:29
 scanf("%s",a);
->
scanf("%s\n",a);
看看
csdnqixiaoxin
csdnqixiaoxin 这个也不行呀~
大约一年之前 回复
Chorzen
Chorzen   2016.09.17 20:24

应该是编译器的问题吧,scanf从输入流里读入数据,读入失败会返回-1,你每次输入都会按一次回车,但是scanf不读入回车,回车会滞留在输入流中可能造成堵塞,所以scanf返回-1

Csdn user default icon
上传中...
上传图片
插入图片