关闭

关于scanf的返回值叙述。

142人阅读 评论(0) 收藏 举报
分类:

刚开始学习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
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

利用c语言scanf返回值来控制非数字值时循环结束

利用c语言scanf返回值来控制非数字值时循环结束最近在学C语言,参考书籍是Stephen Prata的《C Primer Plus》。第五章最后一个编程练习很有意思,题目如下: 编写一个程序,该...
  • kexiaojiu
  • kexiaojiu
  • 2015-12-04 12:14
  • 1142

EOF的含义与scanf的返回值

我学习C语言的时候,遇到的一个问题就是EOF。 它是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。 ...
  • trochiluses
  • trochiluses
  • 2013-12-29 17:23
  • 4196

scanf函数返回值

void main() { int a; int b; int c; printf("请输入三个整数:"); int x=scanf("%d%d%d",&a,&b,&c); prin...
  • m0_37338590
  • m0_37338590
  • 2017-03-07 20:52
  • 235

gets与scanf关于字符串输入(特别是对换行符处理)的一点小解惑

如果scanf只输入一个字符串,gets也只是输入一个字符串,那会有什么区别吗?他们对空格的处理是怎样的呢?1.先来gets的介绍先吧 gets  【1】函数:gets(字符指针)  【2】头文件:...
  • qq_40510397
  • qq_40510397
  • 2017-10-22 16:35
  • 218

scanf和cin的返回值

需要连续从标准输入读取数据时,可以采用下面两种不同的方式判断文件结束:   [cpp] view plaincopy int i;   wh...
  • bo_fengyu
  • bo_fengyu
  • 2014-07-24 08:55
  • 323

c语言scanf返回值

转自http://www.douban.com/note/220299804/
  • num24
  • num24
  • 2014-11-23 11:25
  • 351

关于eof和scanf返回值

EOF不是一个字符或者数字什么的,而是scanf()函数的一个返回值。 所以scanf("%c",&c);再判断(c==EOF)的做法是无效的,因为scanf()根本不会把EOF当作一个字符写进c;...
  • caotsinghua
  • caotsinghua
  • 2016-02-29 15:52
  • 969

scanf用法及scanf中有\n的问题

scanf()函数的原理 想象输入设备(键盘)连接着一个叫“缓冲”的东西,把缓冲认为是一个字符数组。 当你的程序执行到scanf时,会从你的缓冲区读东西,如果缓冲区是空的,就阻塞住,等...
  • weiweicsdn1
  • weiweicsdn1
  • 2016-08-11 18:37
  • 3308

[C]为何scanf("%s", str)不需要&运算

学习C的话,一定会接触到2个语句,scanf和printf。这两个函数都是被定义在头文件stdio.h里的常用函数,在使用的时候需要加上#include。 sacnf是格式输入函数,它按照程序猿指定的...
  • jeasonwsx
  • jeasonwsx
  • 2013-11-20 10:53
  • 1246

scanf的溢出控制与替代使用

如果str在堆中申请的空间较小,使用scanf(“%s”,str)时,很容易发生溢出,怎么解决呢???#include #include int main(int argc, char *argv[...
  • daa20
  • daa20
  • 2017-03-20 17:22
  • 572
    个人资料
    • 访问:44762次
    • 积分:3226
    • 等级:
    • 排名:第12267名
    • 原创:287篇
    • 转载:18篇
    • 译文:0篇
    • 评论:9条
    博客专栏
    文章分类
    最新评论