scanf的返回值

scanf的返回值scanf 的返回值函数 scanf 的返回值就是 所输入的数据与格式字符串中匹配次数 简单来说就是 它返回已成功赋值的数据项数 出错时则返回 EOF 注 EOF EndOfFile 是一个预定义的常量 等于 1 例如 可以通过以下程序证实 include amp amp lt stdio h amp amp gt 证实函数 scanf 的返

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

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

#include 
     /*证实函数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


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

另做参考:

#include 
      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( )的返回值的意义(即“所输入的数据与格式字符串中匹配次数”),来把控我们的输入格式的正确性.
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211620.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午10:00
下一篇 2026年3月18日 下午10:00


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号