博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
scanf和cin的返回值
阅读量:2359 次
发布时间:2019-05-10

本文共 1037 字,大约阅读时间需要 3 分钟。

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

 

 

首先看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文件中定义了类型转换函数:

有这个函数定义后,需要时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()------返回当前错误状态位.

转载地址:http://jhntb.baihongyu.com/

你可能感兴趣的文章
Android Studio Freeline插件详解
查看>>
SourceTree冲突解决详解
查看>>
iOS CocoaPods 详解
查看>>
Object-C Block详解
查看>>
iOS AFNetworking 以及 Cookie 详解
查看>>
Intellij IDEA 将工程转换成maven工程 详解
查看>>
Linux 安装以及基本使用Hadoop 详解
查看>>
iOS pushViewController 和 presentViewController的区别 详解
查看>>
iOS UICollectionView 和 UITableView cell更新 详解
查看>>
BFS解小孩分油问题
查看>>
Bloom filter
查看>>
R语言绘制barplot(盒状图)以及plot(点状图)处理字体大小问题
查看>>
在Hadoop中使用MRUnit进行单元测试
查看>>
Type mismatch in key from map: expected .. Text, received … LongWritable
查看>>
详解Java内存机制(堆与栈)的分配
查看>>
The Small Files Problem
查看>>
Hadoop Archive解决海量小文件存储
查看>>
Hadoop SequenceFile Writer And Reader
查看>>
Custom KeyValueTextInputFormat
查看>>
Hadoop0.20+ custom MultipleOutputFormat
查看>>