C语言中的EOF
本文是自己通過各種查閱以后的個人理解,如果有理解的地方還請大家多多指正!
在做小算法題目的時候經(jīng)常用到EOF,模模糊糊用但不清楚到底是什么意思。后來遇到了問題進行了仔細了解。
EOF是End Of File,也就是指“文件”的結(jié)尾,這里的文件可以指文件(file),也可以指輸入(stdin)。
可以說它是一個特殊字符,也就是 -1。
①當對文件進行讀取的時候,到了文件的結(jié)尾的時候,系統(tǒng)會返回一個信號,也就是EOF(-1),進行判斷是否到了文件的結(jié)尾。
②當對輸入進行判斷的時候,如下例,那么怎樣結(jié)束while循環(huán)呢?
while(scanf("%d %d",&a,&b)!=EOF){printf("輸入的數(shù)字是%d %d\n",a,b); }?
? 首先:要講一下scanf,scanf是有返回值的,返回值取決于讀到的變量的個數(shù)。
? ? ? ? ? 如果 int num = scanf("%d %d",&a,&b);
? ? ? ? ? 輸入:1 0 ?則 num = 2;
? ? ? ? ? 輸入:1 a ?則num = 1; 因為a不是十進制整數(shù),隨意不能成功讀取
? ? ? ? ? 輸入:a 1 ?則num = 0; 因為a不能讀取后面的1也無法成功讀取
? ?那么,問題來了!無論你輸入對與錯返回值都是大于等于0的數(shù),怎么會出現(xiàn)EOF(-1)呢~?
? ?其實,在Windows中 Ctrl+Z 為EOF,在Linux中 Ctrl+D 為EOF,這樣就可以結(jié)束循環(huán)了。
?
? ?
轉(zhuǎn)載于:https://www.cnblogs.com/maxiaobao/p/5147410.html
總結(jié)
- 上一篇: Linux系统编程41:多线程之线程池的
- 下一篇: java 获取当前时间月加1 ,年加1