博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
while(scanf("%d",&n)!=EOF)与while(cin>>n)
阅读量:6995 次
发布时间:2019-06-27

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

我们知道scanf函数是C语言里面的,其返回值是,被输入函数成功赋值的变量个数。针对于int  counts = scanf("%d",&n);来说如果赋值成功那么其返回值为1,即counts的值也是1。例如下面这个例子:

int c,b;    int counts = scanf("%d %d", &c, &b);    cout << counts;

while(条件语句);如条件语句为真,那么循环可以一直进行下去,如果为假则循环结束。就while(scanf("%d",&n)!=EOF)而言,由于EOF(end of file)是文件尾尾标符,它的值为-1,那么scanf("%d",&n)的返回值为1的话,该条件语句为真,循环将会进行下去;如果条件不成立,则跳过该循环,直接执行后面的语句。

对于while(cin>>n)来说,cin是C++的输入流对象,">>"是重载的运算符,cin>>的返回值是cin对象。如istream & operator >> (istream &is, char a[]);下面可以看一个例子:

int _tmain(int argc, _TCHAR* argv[]){    int len = 1;    char a[3];    while (cin >> a || cin >> len)    {        cout << a << endl;        cout << len <

输入 qq 和 0时,结果如下:

这个结果为什么是这样,它是如何得到的呢?其实是这样的:当我们输入qq和0时,其中间是用空格隔开的,这样cin>>qq之后返回cin对象再对0进行读取,后面的cin>>len并没有执行。所以while循环将会执行两次,一次是a[] = "qq",另一次是a[] = "0";这样才会出现以上的结果。

如果将while (cin >> a || cin >> len)改成while (cin >> a >> len),执行结果如下:

相信这个结果大家就好理解了。

下面对cin再做一下介绍,当我们从键盘输入一串字符

输入(cin)缓冲是行缓冲。当从键盘上输入一串字符并按回车后,这些字符会首先被送到输入缓冲区中存储。每当按下回车键后,cin 就会检测输入缓冲区中是否有了可读的数据,这种情况下cin对键盘上是否有作为流结束标志CTRL+Z或者CTRL+D,其检查的方式有两种:阻塞式以及非阻塞式。

阻塞式检查方式指的是只有在回车键按下之后才对此前是否有 Ctrl+Z 组合键按下进行检查,非阻塞式样指的是按下 Ctrl+D 之后立即响应的方式。如果在按 Ctrl+D 之前已经从键盘输入了字符,则 Ctrl+D的作用就相当于回车,即把这些字符送到输入缓冲区供读取使用,此时Ctrl+D不再起流结束符的作用。如果按 Ctrl+D 之前没有任何键盘输入,则 Ctrl+D 就是流结束的信号。

阻塞式的方式有一个特点:只有按下回车之后才有可能检测在此之前是否有Ctrl+Z按下。

1 int _tmain(int argc, _TCHAR* argv[]) 2 { 3     char a[3]; 4  5     while (cin >> a) 6     { 7         cout << a << endl; 8     } 9     return 0;10 }

输入数据为Ctrl+D和Ctrl+Z,结果如下:

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

你可能感兴趣的文章
hibernate.cfg.xml
查看>>
CentOS 7.5安装配置Tomcat详解(一)
查看>>
学习使用编码和解码
查看>>
Android系统进程Zygote启动过程的源代码分析(2)
查看>>
Oracle ASM故障数据恢复
查看>>
Obj-C集合使用demo
查看>>
应用实战:从Redis到Aerospike,我们踩了这些坑
查看>>
mysql 主从复制
查看>>
Gartner: 2017年11大信息安全技术(解读版)
查看>>
Cocos2d v2.x, failing to install templates.. permission denied.
查看>>
我和我从这里开始新的技术人生
查看>>
Linux源码包制作RPM包之Apache
查看>>
我的友情链接
查看>>
HA Cluster和KeepAlived
查看>>
CSS中font属性的注意事项
查看>>
python ftp 处理
查看>>
js实现依赖注入
查看>>
设计模式学习
查看>>
顶部浮层
查看>>
C语言基础教程读书笔记5.1(第五章函数和存储类1)
查看>>