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