读书人

关于scanf()的一点有关问题

发布时间: 2013-03-27 11:22:42 作者: rapoo

关于scanf()的一点问题
void main()
{
link la,lb,lc;
int size,door,value,index;

l87:printf("请输入要建立链表的元素个数:");
scanf("%d",&size);
if(scanf("%d",&size)!=1||size<1)
{
printf("输入不合法。");
fflush(stdin);
goto l87;
}

la=creatlink(size);
………………
}
代码我就不全贴了,我说说问题吧:
我的本意是让程序能处理用户输入出错的情况,所以就加了个if.然后问题就出来了。
我刚开始没加fflush(stdin);。这种情况下如果输入出错就会不停的“打印输入不合法。"和"请输入要建立链表的元素个数:"。根本不给我再次输入的机会。
后来我加上了这一句,但又出现一个新问题,那就是即便是输入正确,程序也不会继续执行了,但也不会报错。差不多就是卡住不动了。
这是为什么?????????
[解决办法]
首先,你这个程序,你自己研究下,你那个scanf是输入几次的?个人了解你那是两次的scanf,第一次是输入size,程序顺序结构里面,然后再if里面又增加了一个scanf,你这个明显是又要执行一次scanf,才会有返回值。。。。所有既然你要判断scanf的返回值,为啥不在顺序之后的时候就将其赋值?然后再if中判断,既然if中有了scanf的输入并判断,前面那个scanf语句就可以删掉,试试吧。

读书人网 >C语言

热点推荐