scanf的返回值

函数scanf( )的返回值 就是:
(啊啊啊为啥scanf还有返回值??)
“所输入的数据与格式字符串中匹配次数.”
简单来说就是,它返回已成功赋值的数据项数;出错时则返回EOF.
(注:EOF(End Of File)是一个预定义的常量,等于-1.)

例如,可以通过以下程序证实

#include<stdio.h>
/*证实函数scanf()的返回值*/
int main()
{
    int a,b; 
    int input;

    /*获取scanf函数的返回值*/
    input = scanf("%d %d",&a,&b);
    printf("input = %d",input);
}

此例中:

  • 若输入:1 2↙
    输出:input = 2
    说明:成功输入了两个整数.

    a = 1,b = 2,input = 2

  • 若输入:1 a↙
    输出:input = 1
    说明:仅仅匹配了变量a,而整型变量b无法得到字符‘a’,依旧是一个未赋值前不确定的值.
    如调试图:

    a = 1,b = 0,input = 1

  • 若输入:a b↙
    输出:input = 0
    说明:均未成功读入.
    如调试图:

    a = 0,b = 0,input = 0

  • 若输入:^Z ^Z↙
    会得到:input = -1
    说明:输入出错,返回值为-1.
    (注:ctrl+z输入代表输入文件结束符)
    如调试图:

    a = 0,b = 0,input = -1


例如,在ACM中,一道入门题
“A+B for Input-Output Practice (I) ”中可以用到:

#include <stdio.h>
/*计算a + b*/
int main()
{ 
    int a,b;
    /*当输入不非法的时候不断读取a,b*/
    while(scanf("%d %d",&a, &b) != EOF)
    {
         printf("%d\n",a+b);
    }       
} 

另做参考:

#include <stdio.h>
int main()
{
    int a,b;
    int input = scanf("%d %d",&a,&b);
    while(input != 2)/*直到两整型变量a,b同时读入整数时才跳出循环*/
    {
        fflush(stdin);/*清除缓冲区*/
        input = scanf("%d %d",&a,&b);
    }
    printf("%d + %d = %d",a,b,a + b);
    return 0;
}

总之,我们可以通过运用函数scanf( )的返回值的意义(即“所输入的数据与格式字符串中匹配次数”),来把控我们的输入格式的正确性.
  • 67
    点赞
  • 114
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值