博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EOF需要两次才能结束输入
阅读量:6808 次
发布时间:2019-06-26

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

.EOF作为文件结束符时的情况:

  EOF虽然是文件结束符,但并不是在任何情况下输入Ctrl+D(Windows下Ctrl+Z)都能够实现文件结束的功能,只有在下列的条件下,才作为文件结束符。
(1)遇到getcahr函数执行时,要输入第一个字符时就直接输入Ctrl+D,就可以跳出getchar(),去执行程序的其他部分;
(2)在前面输入的字符为换行符时,接着输入Ctrl+D;
(3)在前面有字符输入且不为换行符时,要连着输入两次Ctrl+D,这时第二次输入的Ctrl+D起到文件结束符的功能,至于第一次的Ctrl+D的作用将在下面介绍。
  其实,这三种情况都可以总结为只有在getchar()提示新的一次输入时,直接输入Ctrl+D才相当于文件结束符。
2.EOF作为行结束符时的情况,这时候输入Ctrl+D并不能结束getchar(),而只能引发getchar()提示下一轮的输入。
   这 种情况主要是在进行getchar()新的一行输入时,当输入了若干字符(不能包含换行符)之后,直接输入Ctrl+D,此时的Ctrl+D并不是文件结 束符,而只是相当于换行符的功能,即结束当前的输入。以上面的代码段为例,如果执行时输入abc,然后Ctrl+D,程序输出结果为:
abcabc
注意:第一组abc为从终端输入的,然后输入Ctrl+D,就输出第二组abc,同时光标停在第二组字符的c后面,然后可以进行新一次的输入。这时如果再次输入Ctrl+D,则起到了文件结束符的作用,结束getchar()。
如果输入abc之后,然后回车,输入换行符的话,则终端显示为:
abc     //第一行,带回车
abc     //第二行
        //第三行
其中第一行为终端输入,第二行为终端输出,光标停在了第三行处,等待新一次的终端输入。
从这里也可以看出Ctrl+D和换行符分别作为行结束符时,输出的不同结果。
EOF 的作用也可以总结为:当终端有字符输入时,Ctrl+D产生的EOF相当于结束本行的输入,将引起getchar()新一轮的输入;当终端没有字符输入或 者可以说当getchar()读取新的一次输入时,输入Ctrl+D,此时产生的EOF相当于文件结束符,程序将结束getchar()的执行。

 

 

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

你可能感兴趣的文章
ssh 遍历IPS 进行连接
查看>>
Linux网卡名改eth0方法
查看>>
python 实现斐波那契数列,动态删除历史数据demo,很久以前写的,分享给大家...
查看>>
iftop网卡流量监控软件
查看>>
linux 文件查找
查看>>
eclipse使用hadoop插件出现java.lang.OutOfMemoryError: Java heap space
查看>>
Unicode Tips
查看>>
jvm学习--类加载器
查看>>
enlightenment提权的工具
查看>>
指针的意义和linux的内存回收艺术
查看>>
操作系统就是虚拟机--主内又主外
查看>>
Centos网络管理(五)-Bonding、网络组和网桥
查看>>
PyCharm----中文显示乱码的解决方法总结
查看>>
crontab使用环境变量
查看>>
“独立博客”为什么独立?
查看>>
Uber花了21亿元入驻上海自贸区 不叫优步叫雾博
查看>>
Java内存模型
查看>>
AppLinks使用详解
查看>>
JavaScript正则表达式19例(11)
查看>>
UNIX发展历史流程图
查看>>