码迷,mamicode.com
首页 > 其他好文 > 详细

关于while(scanf_s("%d",&x)!=0) 的逻辑错误 (scanf_s的 返回值)

时间:2019-11-03 14:30:03      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:遇到   end   输入   证明   成功   scan   can   break   amp   

背景:1.要求输入多组数据,然后输出什么东西,当第一个数输入的是0是,程序停止。
2.前几天学过 while(scanf_s("%d",&x)!=EOF) ctrl+z时停止 所以我想可以把EOF换成0,这样输
入0是就可以停止,但是事实证明我错了。

知识储备:scanf_s的返回值
scanf("%d %d",&a,&b);
函数返回值为int型。如果a和b都被成功读入,那么scanf的返回值就是2;
如果只有a被成功读入,返回值为1;
如果a和b都未被成功读入,返回值为0;
如果遇到错误或遇到end of file,返回值为EOF。end of file为Ctrl+z 或者Ctrl+d。

错误:当我输入0时,我成功的读入了一个数,则scanf_s成功的返回了1,此时1!=EOF成立 注意EOF通常为-1,ctrl+z,此时while成立,执行while里面的程序,所以逻辑错误。

解决:while (scanf_s("%d",&x))
{
x==0;
break;
............
}
return 0;
这样就可以成功解决问题,而且是在0时结束程序

关于while(scanf_s("%d",&x)!=0) 的逻辑错误 (scanf_s的 返回值)

标签:遇到   end   输入   证明   成功   scan   can   break   amp   

原文地址:https://www.cnblogs.com/panghushalu/p/11786065.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!