2021-02-28

scanf函数返回值


include <stdio.h>
#include <stdlib.h>
int main()
{
    int a,b,c;    printf("请输入三个整数:");
    int x=scanf("%d%d%d",&a,&b,&c);       
    printf("d%\n%d\n",a,x);}

请输入三个整数:1 2 3
输出1,3
请输入三个整数:5 6 d
输出5,2
可见scanf函数的返回值与正确接收到的值有关,
还有当发生错误时,返回eof,其值往往为-1
scanf函数因输入方式的因素会发生一项常见的错误,例如下


do
{
scanf(”%d”,&n);
}while(n<1);

这时候如果输入一个字符,那么该循环会一直持续下去(在VC++6.0debug版下),原因是输入一个字符与所要求的整型不相匹配,读取的时候在输入流里面遇到除空格,回车,tab外其他字符都会视做该数据的结束,然后n并没有初始化,其值在上VC版本中会一直是-858993460,为什么会一直是这个值,按理来说应该是一个随机的值,原因在于在debug版本下,原本该版本就是为了方便调试,假如因为未初始化的值是随机性的,程序一下调试成功,一下调试失败,就很难发现错误。
修改方法如下


do
{    
scanf(”%d”,&n); 
getchar()
   }while(n<1);

加如getchar()的目的在于把那个字符给读取并消耗掉。因为getchar()也是在流上面读取数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值