键盘输入EOF, 为何循环还不停止
来源:互联网 发布:淘宝网的仅把毛衣 编辑:程序博客网 时间:2024/04/29 10:55
在K&R的C语言教程里看到这段程序,关于输入字母计数的程序,如下:
#include<stdio.h>void main(){ long coff=0; while(getchar()!=EOF) coff++; printf("%ld\n",coff);}
代码不复杂,只有在键盘输入EOF键时,循环才会结束。
那么如何才能从键盘输入EOF呢?(我的编程环境是 windows 7 + visual studio 2010)
查了一下资料:
http://bbs.csdn.net/topics/310129688
http://en.wikipedia.org/wiki/End-of-file
发现在Windows 下,输入 ctrl+z 或者F6 键是可以代表EOF的,但是具体的情况有点怪异。
例如输入 “abcd^z 回车” 时,程序还在继续,继续后在新的一行输入 “^z 回车” 时,程序才结束,输出5。
如果输入 “abcd^Z^Z^Z 回车 ^Zefg 回车” , 还是输出5。这说明:
- 第一行内的三个^Z^Z^Z并没有算三次;
- 第二行开头的^Z后面三个字母efg 并没有计算到coff里,也就是说,程序运行到了接收字母e时,已经跳出了循环
- abcd 四个字母,再加一次回车,所以输出是5 (如果中间输入两次回车,也就是“abcd^Z^Z^Z 回车 回车 ^Zefg 回车”时,输出是6,就说明)
- while循环遇到^Z开头的新的一行就结束了,无论后面有多少字母,这些输入的字母都没有影响到coff的值
归纳一下上述第一个讨论链接的内容,可以大概这样理解EOF:
“在行缓冲里,如果EOF前面还有字符,那么操作系统不会产生EOF,只有前面没有任何字符的时候才会产生。”
然后这是另一个小节,关于putchar()函数的 (待续)
- 键盘输入EOF, 为何循环还不停止
- 键盘输入EOF,在istream_iterator中, 不输入EOF死循环
- 输入一串未知个数的数据直到EOF(-1)停止和键盘输入文件结尾符EOF
- EOF 键盘输入end of file
- 三年过去了,小米为何还不指纹解锁?
- 不停止计划生育,中国还在等什么?
- eof造成死循环
- 为何还没谈恋爱?
- 键盘输入循环缓冲区问题
- 循环从键盘输入
- DIV设置text-align居中了 里面包含的DIV为何还不居中
- 2012是传说中的世界末日,菜农为何还不出手?
- Google为何看起来不担心Android的营收情况整个市场还处于扩大状态
- secureCRT 不识别 键盘输入
- 你为何还不起来?
- 为何你还不是领导?
- for 循环为何可恨?
- 关于在Windows下用键盘输入EOF的一些疑问
- JS学习 面向对象
- JavaScript正则表达式:匹配位置
- 你是否有游戏开发经验,学习Cocos2d-x多久?
- fixed应用
- 如何编译AML8726-MX Linux 3.0.8 Source Code(乐视盒子)
- 键盘输入EOF, 为何循环还不停止
- 18款 jQuery UI框架
- 搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门
- 苹果将要发布128GB的iPad产品售价799美元
- VC++6.0调试MFC源码的技巧
- 程序员面试求职100题(1-10)
- Oracle 10g RAC (linux) ASM 共享存储的管理详解
- 我在Tieto的一次介绍
- roller使用手册