| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4188 人关注过本帖
标题:关于scanf()的返回值
只看楼主 加入收藏
Magic_July
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:109
注 册:2012-9-25
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:14 
关于scanf()的返回值
程序代码:
#include<stdio.h>
int main()
{
    int a,aa,bb,cc,dd;
    long int b;
    float c;
    double d;
    aa=scanf("%d",&a);
    printf("aa=%d\n",aa);
    bb=scanf("%ld",&b);
    printf("bb=%ld\n",bb);
    cc=scanf("%f",&c);
    printf("cc=%d\n",cc);
    dd=scanf("%f",&d);
    printf("dd=%d\n",dd);
    
}

这是不同类型scanf()的返回值的一个测试
但我输入q的时候却是直接都返回0
q
aa=0
bb=0
cc=0
dd=0
chh=0
输入都输入1的时候却是这样
1
aa=1
1
bb=1
1
cc=1
1
dd=1
1
chh=1
这是为什么?
希望能有个明确的解释
2013-06-05 22:48
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
收藏
得分:0 
程序代码:
#include<stdio.h>
int main()
{
    int a,aa,bb,cc,dd;
    long int b;
    float c;
    double d;
    aa=scanf("%d",&a);
    printf("aa=%d\n",a);
    bb=scanf("%ld",&b);
    printf("bb=%ld\n",b);
    cc=scanf("%f",&c);
    printf("cc=%lf\n",c);
    dd=scanf("%lf",&d);
    printf("dd=%lf\n",d);
    
}

你的代码好像有错!

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-06-05 22:54
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
收藏
得分:0 
我看错了!!

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-06-05 22:55
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
收藏
得分:0 
aa=scanf("%d",&a);能这样用吗?没见过!

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-06-05 22:58
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
我之前也遇到过类似的问题,
你自己先单步调试一下。
我在中间输出了一下b的值,发现无论开始是否对b初始化,都是输出b的值为0,这里面是不是有点蹊跷?
我再看看。。

学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-06-06 00:39
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
#include<stdio.h>
int main()
 {
     int a;
     float b;
     char c;
     double d;

     int aReceive,bReceive,cReceive,dReceive;

     aReceive=scanf("%d",&a);
     printf("aReceive=%d\n",aReceive);

     bReceive=scanf("%f",&b);
     printf("bReceive=%d\n",bReceive);

     cReceive=scanf("%c",&c);
     printf("cReceive=%d\n",cReceive);

     dReceive=scanf("%f",&d);
     printf("dReceive=%d\n",dReceive);

     return 0;
 }

楼主运行一下这个程序就会恍然大悟。

学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-06-06 00:49
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:5 
因为你输入的p跟任何一个scanf的参数列表都不匹配,所以没有哪个scanf能够接受,
所有的scanf都被扫过而不接受任何信息,当然所有的scanf返回值都是0喽~

学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-06-06 00:51
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
期待楼主的看法~

学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-06-06 00:57
猫小喵
Rank: 2
来 自:计算机专业
等 级:论坛游民
帖 子:29
专家分:77
注 册:2013-5-12
收藏
得分:0 
回复 6楼 蚕头燕尾
只能输入三个数程序有问题!!请在%c前加空格  
     cReceive=scanf(" %c",&c);

做一个爱编程得女生
2013-06-06 21:37
笑傲
Rank: 8Rank: 8
来 自:迪拜
等 级:蝙蝠侠
威 望:5
帖 子:223
专家分:856
注 册:2013-3-9
收藏
得分:5 
输入的q和参数列表不符合,所以被一直保留在缓存区中,因此显示全部是0;

练就一身本领,只为笑傲江湖!
2013-06-06 21:52
快速回复:关于scanf()的返回值
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024458 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved