關於C語言讀取文件時候多讀一行


梗概:為什么C語言讀取文件到結構體時為什么整天多讀一行?一切都是【!feof(fp)】的錯!!!

    while (!feof(fp)) {
        fgets(buffer, 256, fp);
        j++;
    }

 

 像這樣的代碼,是很多C語言學者經常犯的錯誤!!

feof()這個函數是用來判斷指針是否已經到達文件尾部的。
若fp已經指向文件末尾,則feof(fp)函數值為“真”,即返回非零值;否則返回0。

對呀!那有什么問題的呢?

其實feof() 這個函數是當讀到文件結束符就返回 true 值,而非到文件最后一個字符,所以當讀完文件最后一個字符時,如果后面還有換行或者空格的時候, 他會繼續循環。所以就會多把最后循環一次。解決的方法其實很簡單!!只需要把fgets放到while哪里判斷就OK了!!

    while (fgets(buffer, 256, fp)) {
        j++;
    }

 

怎樣?簡單粗暴吧??


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM