如何理解scanf的返回值问

#include <stdio.h>

int main()
{
        int i,sum,status;
        sum = 0;


        do
        {
            printf("请输入合法的数字:");
            status =scanf("%d",&i);
            sum = sum + i;
        }
        while (status == 1);

        printf("结果是:%d", sum);

        return 0;
}

在做题时遇到这个题目,要求对用户输入的整数进行求和。当用户输入任意字符时,结束程序并打印结果。在看答案时对scanf的返回值很困惑,查找后得知: “如果函数调用成功,返回值是成功获取并填充到附加参数中的个数。

如果函数调用失败,返回值小于附加参数的个数(甚至是 0)。”

例子

#include <stdio.h>

int main()
{
        int a;
        int b;
        int c;


        printf("请输入三个整数:");
        int x=scanf("%d%d%d",&a,&b,&c);
        printf("%d",x);

        return 0;
}

如果输入4 5 8, x = 3;

如果输入1 2 c, x = 2; (c表示我没按照scanf的格式符%d输入,也就是不符合格式符形式的输入)

如果输入1 c c, x = 1;

如果输入c c c, x = 0;

如果输入c 1 1, x = 0;

如果输入1 c 1, x = 1;

由此可见,scanf返回值是所有符合格式符的正确输入的个数,如果遇到第一个错误的输入形式就停止。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值