c語言 C語言fgets怎么檢測到文件末尾的?返回NULL,檢測到結(jié)尾換行符就結(jié)束了嗎?
C語言fgets怎么檢測到文件末尾的?返回NULL,檢測到結(jié)尾換行符就結(jié)束了嗎?c語言中fgets的返回值類型?1。如果成功,此函數(shù)將返回相同的str參數(shù)。如果到達(dá)文件末尾或未讀取任何字符,STR的內(nèi)
C語言fgets怎么檢測到文件末尾的?返回NULL,檢測到結(jié)尾換行符就結(jié)束了嗎?
c語言中fgets的返回值類型?
1。如果成功,此函數(shù)將返回相同的str參數(shù)。如果到達(dá)文件末尾或未讀取任何字符,STR的內(nèi)容將保持不變,并返回空指針。如果發(fā)生錯誤,則返回空指針。如果讀取字符時遇到文件結(jié)尾,將設(shè)置EOF指示符。如果在讀入任何字符之前發(fā)生這種情況,流將保留原始內(nèi)容并返回null。2如果發(fā)生讀入錯誤,將設(shè)置錯誤指示符并返回null,并且可以更改流的值。如果文件中的行少于n-1個字符,則該行的讀取結(jié)束。如果行中的字符數(shù)(包括最后一個換行符)超過n-1,fgets只返回不完整的行。但是,緩沖區(qū)總是以空字符結(jié)束,對fgets的下一個調(diào)用將繼續(xù)讀取該行。函數(shù)在成功時返回stream,在失敗時或在文件末尾返回null。因此,不能直接用fgets的返回值來判斷函數(shù)是否因錯誤而終止,應(yīng)該用feof函數(shù)或feror函數(shù)來判斷。
c語言執(zhí)行fgets時,如何判斷是否到了文件末尾?
如果文件末尾有空行,請?zhí)貏e注意使用fgets讀取文件,例如:aaa234444bbbb123kkkk900000000ccc34。如果結(jié)尾沒有空行,即沒有n,fgets在讀取ccc34行時遇到EOF,如果結(jié)尾有空行,則返回end,STR=“ccc340”;fgets在讀取ccc34行時遇到newline,STR=“ccc34n0”,文件不讀取返回EOF。當(dāng)fgets再次遇到EOF時,fgets返回null。STR的內(nèi)容不變。因此,最好使用fgets來判斷是否應(yīng)該在讀取時結(jié)束:while(fgets(…){…}而不是while(!Feof()){fgets()…}