大家在C/C++的學習訓練中,會看到EOF這個東西,但在常見的教材上往往沒有EOF這樣的寫法,下面為大家詳細介紹
首先大家明確一點,教材上沒有,并不是沒有給大家講解完整,大家應該借助我們學習的語法來理解這個東西是什么EOF,如果完整學習過C語言,看到三個大寫字母,你首先應該聯(lián)想到C語言當中的宏定義,因為宏定義有個不成文的規(guī)定,那就是宏名往往是大寫,因此我們就可以按照這個思路,在編譯器當中查找這個宏定義是否存在來驗證。筆者這里以VC6編譯器為例,可以隨便寫一個包含stdio.h這個頭文件C語言的代碼,鼠標光標移動至這個頭文件這里點擊鼠標右鍵,打開stdio.h這個頭文件,如圖:
打開頭文件之后,為了快速找到我們可以搜索一下EOF這個關鍵詞,如下圖:
怎么樣,可以快速找到EOF的定義,果然是一個宏定義對不對?!
這下大家就明白了吧! EOF本身就是一個-1的常量! 通過宏定義起了一個別名而已!
為什么叫EOF是因為文件末尾的英文翻譯過來是End of File,因此取前三個字母就是EOF了!所以EOF通常用來表示已經(jīng)到達文件末尾的意思。
那么相應的,在ACM或藍橋杯等程序競賽中,大家在經(jīng)常會看到類似while(scanf("%d",&a)!=EOF)這樣的代碼的時候也就明白什么意思了吧!
很明顯,是通過判斷scanf的返回值與-1相比作為while的循環(huán)條件,不斷的接收用戶從鍵盤輸入的值來達到效果。
怎么樣,大家理解學會了嗎?
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:
一點編程也不會寫的:零基礎C語言學練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學奧賽或C++選手的 必學C++課程
藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導課程