本文是自己通過各種查閱以后的個人理解,如果有理解的地方還請大家多多指正!
在做小算法題目的時候經常用到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,這樣就可以結束循環了。