看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《danielpowter (daniel)》之銘言: : 其實我爬過很多文章 : 也股狗過了 : 可是 我還是無法順利的處理問題 : 所以來請教各位前輩了 : 我的迴圈是以下 : while (fscanf (timefp, "%d", &Timedata)!=EOF) : 其實在我撰寫之前我就有猜到會多讀取一次了 : 可是我現在一直想處理掉 : 看了很多可是不是跑無限迴圈 : 不然就是讀取不出來 : 請各位教導一下我了 謝謝 : ps. timefp 是ASCII檔案 : 拍謝 打太快 打錯了XD 以改正 我的意思的確是建議寫成 while (fscanf(timefp, "%d", &Timedata) == 1) 這樣可以保證你讀到一個數字的東西才會進入接下來的區塊 為什麼不寫成EOF,我這邊的看法是,我上網查了一下EOF對應到的數字正常好像是-1 那如果你的檔案裡面加上一些有的沒的非數字的東西,他會回傳0,而非EOF 你可以試試看~ 如果檔案內容是: ------- 1 2 3 4 <EOF> ------- 這種情況兩支程式可能都會過 但如果檔案內容是: ------- 1 2 3 4 orz 5 <EOF> ------- 寫!=EOF經過我的測試會無窮迴圈,你可以用ftell把檔案位置印出來研究看看 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.49.166
yueayase:這好像是因為讀到orz,卻不是整數造成的後遺症,fscanf() 01/23 01:36
yueayase:會試圖去讀一個整數,但orz不是,所以就一直停在那裏,一直 01/23 01:37
yueayase:執行,原因好像是這樣吧? 01/23 01:37
firejox:EOF不見得是-1....就如同NULL不見得是0一樣 01/23 19:38