scanf和cin的返回值(转)

需要连续从标准输入读取数据时,可以采用下面两种不同的方式判断文件结束:

[cpp] view plaincopy

    1. intwhile"%d"dowhiledo

      首 先看scanf,当成功读取时返回读取的项的数目,如:scanf("%d %d",&i,&j)返回2,scanf("%d %f %s",&i, &f, c)返回3。这个数目可以是你希望读取的项数,也可能小于希望读取的项数,在匹配失败时返回0(如:用scanf("%d",&i)接收整数而输 入是英文字母时就返回0)。需要注意的是用while(scanf("%d",&i) != EOF)时,接收到像876652098643267843超过int型取值范围的数时循环也会继续执行;相同的情况出现在while(cin >> i)上时循环会立即结束。

      cin >>返回值的类型是basic_istream&,代表cin的地址。在ios.h文件中定义了类型转换函数:

      [cpp] view plaincopy

      1. operator voidconstifreturnreturnvoidthis有这个函数定义后,需要时ios类型转换成void*类型。而在读入发生错误时返回0。

        在对一个流对象进行I/O操作发生错误时,错误的类型被记录在ios类的一个数据成员中。

        ios类中定义的描述错误状态的常量:
               goodbit-------------没有错误,正常状态 
               eofbit---------------到达流的结尾 
               failbit---------------I/O操作失败,清除状态字后,可以对流继续进行操作。 
               badbit--------------试图进行非法操作,清除状态字后,流可能还可以使用。 
               hardfail------------致命错误,不可恢复的错误。 
        对应于这些位,可用ios中定义的如下函数来检查流的当前状态位:
               int good()---------如果正常,返回非0值
               int bad()-----------如果badbit被设置,返回非0值
               int eof()------------如果eofbit被设置,返回非0值
               int fail()------------如果failbit被设置,返回非0值
               int rdstate()------返回当前错误状态位.

scanf和cin的返回值(转)

时间: 2024-11-15 04:08:07

scanf和cin的返回值(转)的相关文章

C语言sacanf的返回值

1. scanf 函数是有返回值的,它的返回值可以分成三种情况 1) 正整数,表示正确输入参数的个数.例如执行 scanf("%d %d", &a, &b);       如果用户输入"3 4",可以正确输入,返回2(正确输入了两个变量):      如果用户输入"3,4",可以正确输入a,无法输入b,返回1(正确输入了一个变量). 2) 0,表示用户的输入不匹配,无法正确输入任何值.如上例,用户如果输入",3 4&qu

关于scanf的返回值

今天写一个小程序时误用while(scanf("%d",&b)!=a),以为scanf的返回值就是输入的值. 其实真相是: scanf返回接收到的变量值的个数. int a,b,c. a 1进去时,试图用字符'a'对a赋值,肯定是错的,于是退出,返回成功接收到赋值的个数 0. 1 a进去时,首先a能获取1.但b不能获取'a',于是返回只是1 如果是 1 1的话,那就都成功,返回2 即返回值应为正确输入的个数,毕竟人家是输入函数嘛.

scanf,printf函数的返回值

参考自:https://www.douban.com/note/220299804/ scanf函数的返回值有三种情况: (1)第一种就是返回一个正整数,表示输入成功元素的个数. (2)第二种如果返回的值为0,代表输入不匹配,没有正确输入任何值,所以有了下面的代码. (3)第三种返回-1(EOF)也就是输入流结束.Windows:CTRL + Z表示输入结束,Linux:CTRL + D. printf函数的返回值为输出元素的个数.printf("%d\n", 1);  //2 #in

scanf返回值问题

闲着没事看C primer plus,看到书中对于scanf输入的判断,常用如下方法: 此时它将返回1视为我输入成功,如果不为1则视为输入失败.那到底scanf的返回值具体指的是什么呢? 例子1: void main() { int a;int b;int c;printf("请输入三个整数:");int x=scanf("%d%d%d",&a,&b,&c);printf("%d/n%d/n",a,x);} 运行结果是:

printf与scanf的返回值、注意点

printf()的返回值为其输出字符串常量的字符数(注意字符数与字数的区别)注意计数针对所有的打印字符,包括空格和不可见的换行字符(不包括字符串的空字符). scanf()函数返回成功读入的项目的个数.即在下面程序中scanf的返回值为1.如果没有读取任何项目(如它期望一个数字但是出入了一个非数字字符),它会返回值0.当它检测到“文件结尾”时,它返回EOF(EOF是文件stdio.h中定义的特殊值.一般,#define 指令把EOF 的值定义为 -1).    int n; float  p; 

scanf返回值的问题

关于scanf的返回值,MSDN里是这样写的:Both scanf and wscanf return the number of fields successfully convertedand assigned; the return value does not include fields that were read butnot assigned. A return value of 0 indicates that no fields were assigned.The retur

C语言scanf函数返回值小记

scanf scanf是C标准库stdio里面定义的用于获取用户输入的函数,具体的介绍可以在CppReference上看到.scanf的返回值是已经成功赋值的变量个数,也就是说在 scanf("%d %d",&a,&b)这个调用返回的值在用户输入1 2时返回的是2,如果用户输入的是1 b,那么返回值为1,如果输入的是a b,那么返回的是0. 问题 刚刚用了这个例子,发现输入字母时会导致一直无限输出0: #include <stdio.h> int main(

c语言中get()函数的原理及返回值

转载自CSDN博客:http://blog.csdn.net/shenglanya/article/details/52213500 首先要记住的一句话就是Never use gets().这是因为gets()函数不检查目标数组是否能够容纳输入,而若想把一个字符串读到程序中,最先要做的事情就是预留存储字符串的空间.所以这很容易导致分配的空间不够大而数组越界,然而gets()函数并不检查这个方面,所以导致的结果就是程序很容易出现漏洞,著名的"蠕虫"病毒的原理就是用很长的数据覆盖原有数据导

(转)如何编写有多个返回值的C语言函数

1引言    笔者从事C语言教学多年,在教学中学生们常常会问到如何编写具有多个返回值的C语言函数.编写有多个返回值的函数是所有C语言教材里均没有提到的知识点,但在实际教学与应用的过程中我们都有可能会遇到这样的问题.有学生也尝试了不少方法:如把多个需要返回的值作相应的处理后变成一个可以用return语句返回的数据,再在主调函数中拆开返回的数据使之变成几个值:或者把需要返回多个值的一个函数分开几个函数去实现多个值的返回.这些方法虽然最终都能实现返回要求的多个值,但从程序算法的合理性与最优化方面去考虑