[問題] 讀檔不用eof 卻跑出無限回圈?

看板C_and_CPP作者 (daniel)時間15年前 (2011/01/14 12:35), 編輯推噓0(008)
留言8則, 4人參與, 最新討論串1/1
我有去努力爬文 都有說到eof會在最後又多讀一次 所以我就用各位的經驗來撰寫 可是我卻發生了 無限迴圈的事件xd FILE *timefp; //宣告 ==============================================開啟檔案 timefp = fopen ("time.txt","r"); if (timefp == NULL) { printf("output error"); system("pause"); return 0; } while (fscanf (timefp, "%d ", &Timedata))//!feof(timefp) { ...... } 我記事本裡面只有一個4 可是會一值無限迴圈 4 4 4 4 4 4 4 這是我觀念錯誤呢 還是我寫錯xd 請多指導 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.134.26.138

01/14 12:37, , 1F
while(fscanf(...)!=EOF) {/* do something */}
01/14 12:37, 1F

01/14 12:55, , 2F
fscanf() will return number of arguments successfully
01/14 12:55, 2F

01/14 12:55, , 3F
read, or EOF if failure occurs.
01/14 12:55, 3F

01/14 12:55, , 4F
如果成功讀取的話會傳一個整數(不是零) 你的 while 當然會
01/14 12:55, 4F

01/14 12:56, , 5F
變成無窮迴圈
01/14 12:56, 5F

01/14 22:37, , 6F
EOF是-1
01/14 22:37, 6F

01/14 22:37, , 7F
不確定有哪些平台上是-1啦 不過EOF有一個值就對了
01/14 22:37, 7F

01/15 00:37, , 8F
while(!feof(timefp)). 奇怪你後面CODE有, 怎麼又不用了
01/15 00:37, 8F
文章代碼(AID): #1DBzAWxN (C_and_CPP)