Crazy

心向大佬,披荆斩棘。

关于scanf的返回值叙述。

刚开始学习C语言的时候,并不知道多组数据为什么要写成形如以下几种形式;


int a,b,c;
while(~scanf("%d%d%d",&a,&b,&c))
或者:

int a,b,c;
while(scanf("%d%d%d",&a,&b,&c)!=EOF)
又或者:

int a,b,c;
while(scanf("%d%d%d",&a,&b,&c)==3)
但是随着知识面的拓展,本博主也知道为什么了,嘻嘻,以下为解释部分,部分摘自刘汝佳的《算法竞赛》

首先要提到一点,scanf这个函数本身是具有返回值的,并且是int型 

int i=scanf("%d%d%d",&a,&b,&c);
是可以进行运行的。
根据史料记载(百度):

1.scanf()函数有返回值且为int型。

2.scanf()函数返回的值为:正确按指定格式输入变量的个数;也即能正确接收到值的变量个数。

但是有一点,当要求输入三个整型时,如果我输入 (1 ,f ,1)这三个时,返回值时1而不是2,(可以上机实验一下)

原因是:遇到输入错误,scanf函数会立即终止,返回已经成功读取的数据的个数。

阅读更多
版权声明:这里要写版权啥的么,,,0.0 https://blog.csdn.net/duan_1998/article/details/53993894
所属专栏: ACM的进程
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

关于scanf的返回值叙述。

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭