查看完整版本: 如何讀檔計算換行?
頁: [1]

tim861121 發表於 2017-9-16 02:19 PM

如何讀檔計算換行?

請問一下這個要怎麼改

        
<div></div>

o_g349 發表於 2017-9-16 03:00 PM

本帖最後由 o_g349 於 2017-9-16 06:58 PM 編輯

你的程式碼有些問題,在我先點出來之前,給你看看正確的話該怎麼寫:



1. fopen 第二個參數應該為 rb
2. fopen 失敗要做錯誤處理
3. sum 要初使化為零
4. feof 不需要
5. 不是用 fscanf,而是用 fgetc
6. if 判斷應該放在 while 下一行
7. 檔案要用 fclose 關掉
8. 最後成功回傳 0

我剛剛測試了一下,這是輸入和執行結果:



輸入內容大致長這樣:「a \n \n b \n 」,有3個換行,執行結果出來也是3個...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

rrtyyy 發表於 2017-9-16 10:58 PM

o_g349 大大分析得精闢,學習了。

但我有個疑問,為何要用 rb ,用 r 不行嗎?
"計算換行'這句話不就代表著這是"文字檔"嗎?
我也是個初學者

o_g349 發表於 2017-9-16 11:26 PM

本帖最後由 o_g349 於 2017-9-16 11:43 PM 編輯

rrtyyy 發表於 2017-9-16 10:58 PM static/image/common/back.gif
o_g349 大大分析得精闢,學習了。

但我有個疑問,為何要用 rb ,用 r 不行嗎?

1. 在後面加上 b 代表以二進位的方式讀取檔案,這樣可以保證在不同平台下有一致的結果
2. 是文字檔沒錯,但他仍然可以以二進位的方式讀取,因為文字檔本身也是由二進位組合而成的,你看我第二張的截圖,輸入檔不是有「610a 0a62 0a」這 6 個 byte 嗎? 那為何要用二進位的方式讀取呢? 原因還是一樣,這樣可以保證在不同平台下有一致的結果,只要輸入檔和程式不變,不會因為從 windows 拿到 linux 或 mac 就炸掉了...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

rrtyyy 發表於 2017-9-16 11:47 PM

o_g349 發表於 2017-9-16 11:26 PM static/image/common/back.gif
1. 在後面加上 b 代表以二進位的方式讀取檔案,這樣可以保證在不同平台下有一致的結果
2. 是文字檔沒錯, ...

原來如此,謝謝!

高手<br><br><br><br><br><div></div>

o_g349 發表於 2017-9-16 11:51 PM

rrtyyy 發表於 2017-9-16 11:47 PM static/image/common/back.gif
原來如此,謝謝!

高手

不會,我也是在網路和官方文件上看到的,不敢說是自己的功勞
頁: [1]