本文目錄一覽:
- 1、C語言 關於文件末尾
- 2、C語言 格式讀取 fscanf() 如何讀取至末尾結束(txt)
- 3、關於C語言讀取文件結尾的問題
- 4、c語言執行fgets時,如何判斷是否到了文件末尾?
- 5、如何用C語言讀取txt文檔中最後一行數據
C語言 關於文件末尾
讀文件的最後一個位元組後,並不是EOF, 然後再讀,讀文件尾才是EOF
你讀最後一個字元, 讀出後沒有EOF,記錄, 然後判斷feof, 之後又開始讀, 才EOF, 沒讀出, 變數里還是之前的值, 你又記錄, 然後再判斷EOF才退出
你應該讀完之後立即判斷EOF然後再記錄,如果讀多個位元組或讀不固定的大小還要判斷讀文件的函數的返回值有沒有讀出來
C語言 格式讀取 fscanf() 如何讀取至末尾結束(txt)
fscanf是有返回值的。如果返回EOF,證明到達文件結尾
在C語言中,或更精確地說成C標準函數庫中表示文件結束符(end of file)。在while循環中以EOF作為文件結束標誌,這種以EOF作為文件結束標誌的文件,必須是文本文件。在文本文件中,數據都是以字元的ASCII代碼值的形式存放。我們知道,ASCII代碼值的範圍是0~127,不可能出現-1,因此可以用EOF作為文件結束標誌。
擴展資料:
應用
檔案存取或其它 I/O 功能可能傳回等於象徵符號值 (巨集) EOF 指示檔案結束的情形發生。實際上 EOF 的值通常為 -1,但它依系統有所不同。巨集 EOF會在編譯原始碼前展開實際值給預處理器。
C語言中,EOF常被作為文件結束的標誌。還有很多文件處理函數處錯誤後的返回值也是EOF,因此常被用來判斷調用一個函數是否成功。
關於C語言讀取文件結尾的問題
可以使用while循環
如:
while(fscanf(fp,”%s”,str)!=EOF) 其中這個判斷 EOF 就是是否讀取到文件結尾
是 end of file的縮寫.
c語言執行fgets時,如何判斷是否到了文件末尾?
如果文件末尾有一個空行,注意特別注意用fgets進行讀,比如文件:
aaa 234 444 bbb
123 kkk 9 00 00000 0000
ccc 34
如果最後沒有空行,即沒有\n,讀到ccc 34這行時,fgets遇到了EOF,結束,str=”ccc 34\0″; 如果最後有空行;讀到ccc 34這行時,fgets遇到了new line,str=”ccc 34\n\0″,此時文件未返回EOF,再次fgets時,遇到EOF,fgets返回NULL,str的內容沒有變,因此用fgets讀時判斷是否該結束最好如此:
while(fgets(…)) {
…
}
而不要用
while(!feof()) {
fgets();
…
}
如何用C語言讀取txt文檔中最後一行數據
如果想自由地讀取txt文檔任意位置,就只能使用隨機讀寫數據文件的方式來讀與寫的操作。因為C語言里的隨機讀寫數據文件提供了 「文件位置標記」和定位的相關函數。
例如:
rewind函數使文件位置標記指向文件開頭
fseek函數改變文件位置標記,其中該函數的原型為:
fseek(文件類型指針,位移量,起始點);
如果僅僅是想讀取文件末尾一行數據,只需把起始點定位到文件末尾,位移量為負數代表向後挪的意思。
如:
fseek(fp,-100L,SEEK_END); // 文件游標定位到文件末尾處,然後向後退100個位元組。
緊接著就是讀取了:
fread(buffer,100,1,fp);
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/186297.html