❶ c語言如何判斷文本文檔的結束
持續讀取字元,直到讀函數返回錯誤,這時進行feof判斷,如果為真,則表示文本文檔結束。
int
feof(FILE
*fp);
功能為判斷文檔是否結束,如果已經達到文件尾,返回1,否則返回0.
除此外,部分讀函數本身返回值同樣可以判斷是否結尾。
1
fgets,
返回NULL表示文件結尾。
2
fscanf,
fgets等,返回EOF表示=文件結尾。
❷ 關於C語言讀取文件結尾的問題
c語言程序編譯不是c語言學習的范圍,你說的這個情況是通過編譯程序將你寫的源程序*.c編譯成可執行文件,如果你需要修改就必須有這個程序的源代碼,也就是你寫的*.c。修改只能在這上面修改。所以程序的源代碼都是很重要的,需要好好保存。
❸ C語言中,文件讀入前要判斷文件是否到末尾。什麼叫做文件末尾啊
比如你要讀入12345678 ,8之後就是末尾了,你從8之後開始讀取就讀取不到任何東西了
❹ c語言中用fread和fwrite函數讀數據時怎樣判斷文件結束
使用feof()來判斷,返回非0就是結束了。
if (feof(fp))
...... 此時就表明文件結束了,別再讀了
❺ C語言中從文件中讀取到回車停止
判斷fscanf得到的字元串長度,長度小於1的表示矩陣之間的空行,即可判斷第一個矩陣讀完畢了.
❻ C語言fgets函數讀取文件,為何以行判斷字元串結束
fgets()如果讀入的是換行符,它將作為字元串的一部分(這與gets()不同)。但當fgets()被中斷(如,遇到文件結尾),則這個字元串是空的。
❼ c語言文件讀取到指定字元結束
在讀到指定字元時,輸入語句return 0;
❽ C語言 格式讀取 fscanf() 如何讀取至末尾結束(txt)
fscanf是有返回值的。如果返回EOF,證明到達文件結尾
在C語言中,或更精確地說成C標准函數庫中表示文件結束符(end of file)。在while循環中以EOF作為文件結束標志,這種以EOF作為文件結束標志的文件,必須是文本文件。在文本文件中,數據都是以字元的ASCII代碼值的形式存放。我們知道,ASCII代碼值的范圍是0~127,不可能出現-1,因此可以用EOF作為文件結束標志。
(8)c語言讀取文件結束擴展閱讀:
應用
檔案存取或其它 I/O 功能可能傳回等於象徵符號值 (巨集) EOF 指示檔案結束的情形發生。實際上 EOF 的值通常為 -1,但它依系統有所不同。巨集 EOF會在編譯原始碼前展開實際值給預處理器。
C語言中,EOF常被作為文件結束的標志。還有很多文件處理函數處錯誤後的返回值也是EOF,因此常被用來判斷調用一個函數是否成功。
❾ 20分c語言文件結束EOF(-1)
在c語言中經常用EOF和feof()來判斷文件的結束,現將有關用法總結如下: 定義 EOF是End Of File 的縮寫,是c語言中標准庫中定義的宏,定義為:#define EOF (-1); feof() 用於測試流文件的結束,有宏和函數兩種定義:宏定義: #define feof(_stream) ((_stream)->_flag & _IOEOF),其中_IOEOF的為:#define _IOEOF 0x0010函數定義:int feof( FILE *stream );說明 EOF的值為-1,是int類型數據,在32位系統中,可以表示為0xFFFFFFFF; EOF 不是一個字元,也不是文件中實際存在的內容。EOF不但能表示讀文件到了結尾這一狀態,它還能表示 I/O 操作中的讀、寫錯誤(可以用 ferror() 來檢測)以及其它一些關聯操作的錯誤狀態; feof()只用於測試流文件的結束,當到達結尾時,返回非0;當文件內部位置指針指向文件結束時,並未立即置位FILE結構中的文件結束標記,只有再執行一次讀文件操作,才會置位結束標志,此後調用feof才會返回為真。 函數如fgetc或getc返回EOF並不一定表示文件結束,當讀取文件出錯時也會返回EOF,僅憑返回-1就認為文件結束是錯誤的;正因為如此,我們需要feof()來判斷文件是否結束,當然用feof()來判斷文件結束時也需要判斷讀取操作是否出錯,這時可以用ferror()來判斷,當其為真時表示有錯誤發生。在實際的程序中,應該每執行一次文件操作,就用用ferror函數檢測是否出錯。 舉例 假設文件指針fp指向某個文件,文件中有字元串「hello」,下面的代碼將輸出hello外,還將輸出一個結束字元EOF(EOF是fgetc函數的返回值,並不是文件中存在EOF):view plain to clipboardprint?int c=0; while(!feof(fp)) { int c=fgetc(fp); printf("%c:\t%x\n",c,c); } int c=0; while(!feof(fp)) { int c=fgetc(fp); printf("%c:\t%x\n",c,c); } 其原因就是當內部指針指向結尾時,還要執行一次讀操作,文件結束標記才置位,而下面的代碼將只輸出「hello」不輸出文件結束符:view plain to clipboardprint?int c; c=fgetc(fp); while(!feof(fp)) { printf("%c:\t%x\n",c,c); c=fgetc(fp); } int c; c=fgetc(fp); while(!feof(fp)) { printf("%c:\t%x\n",c,c); c=fgetc(fp); } 當文件內部指針指向結束位置時,先執行一次讀操作,置位文件結束標記,while循環立即結束。 需要注意的幾點 (1) 位元組的讀取和寫入 fgetc或getc返回一個int類型數據,在正常的情況下, fgetc或getc以 unsigned char 的方式讀取文件流, 擴張為一個整數,並返回. 換言之, fgetc 從文件流中取一個位元組, 並加上24個零,成為一個小於256的整數,然後返回。view plain to clipboardprint?int c; while ((c = fgetc (rfp))!= -1) // -1就是 EOF fputc (c, wfp); int c; while ((c = fgetc (rfp))!= -1) // -1就是 EOF fputc (c, wfp); 在正常讀取的情況下, 上述fgetc函數返回的整數均小於256, 即0x0~0xFF. 而讀不出 0xFFFFFFFF;而寫入時fputc 中的 c 雖然是整數, 但在 fputc 將其寫入文件流之前, 又把整數的高24位去掉了, 所以如果用fputc把 0xFFFFFFFF 往文件里頭寫, 高24位被屏蔽,寫入的將是 0xFF. (2) fgetc返回值的類型(以(1)中的代碼為例) fgetc()返回類型為int,我們可以將其返回值賦給一個int類型變數,如(1)中的代碼,即使是遇到字元0xFF(blank的ascii碼,不是EOF),while循環也不會結束,因為0xFF會被轉化0x000000FF,顯然這與0xFFFFFFFF(EOF)是不相等的,這時能完成正確復制; 如果用一個char 類型的變數c 來接收fgetc()的返回值,會出現什麼情況? 假定下一個讀取的字元為0xFF 則:char c = fgetc (rfp); // fgetc(rfp)的值為 0x000000FF, 然後強制轉化為char類型:c = 0xFFwhile(c != EOF) ; // 字元與整數比較? c 被帶符號(signed)擴展為0xFFFFFFFF,條件成立,文件復制提前退出,故遇到空格字元時就退出,不能完成復制; 如果將c 定義為unsigned char,當讀到文件末尾,返回 EOF 也就是 -1 時:unsigned char c = fgetc (rfp);// fgetc (rfp)的值為EOF,即-1,即0xFFFFFFFF,然後強制轉化為uchar類型, c=0xFFwhile( c!= -1) ; // c 被擴展為 0x000000FF, 永遠不會等於 0xFFFFFFFF,所以這次雖然能正確復制 0xFF, 但卻不能判斷文件結束. 事實上,在 c 為 uchar 時,c != -1 是永遠成立的! 因此,只能將c定義成int類型的變數,這樣才與fgetc返回類型一致
❿ C語言如何讀取文件中的內容一直讀到結尾,每次讀5個字(包括標點符號)
先要打開文件,使用fopen,fread讀取文件內容,判斷文件尾的方法我忘掉了,軀體你查查,讀到內存buffer中,再顯示出來,釋放內存空間,關閉文件。基本上就這些步驟。