[問題] 讀檔問題

看板C_and_CPP作者 (捶榕)時間12年前 (2012/01/02 03:31), 編輯推噓1(1012)
留言13則, 4人參與, 最新討論串9/9 (看更多)
我的程式中 有一段如下: while(EOF!=fscanf(input,"(%d,%d,%c)",&temp1,&temp2,&temp3)) { printf("%c",temp3); storage[temp1].direction=temp1; storage[temp1].height=temp2; storage[temp1].color=temp3; } 其中 printf("%c",temp3);只是測試有沒有完全讀到 而我的input檔是 (1,5,g) (1,5,g) (4,5,b) (3,2,b) (5,5,b) 結果跑出來是g無限迴圈 請問版上的大神們 怎麼會有這樣的結果 感激不盡!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.139.2

01/02 04:21, , 1F
放輸入檔案上來看看 (猜是有 \n)
01/02 04:21, 1F

01/02 08:59, , 2F
fscanf(...) != 3 習慣這樣寫,你就算某一列不完整也
01/02 08:59, 2F

01/02 09:00, , 3F
不會炸掉
01/02 09:00, 3F

01/02 09:02, , 4F
修正,是 ==
01/02 09:02, 4F

01/02 09:28, , 5F
那為什麼會跑出無限迴圈呢? 感謝!
01/02 09:28, 5F

01/02 09:33, , 6F
換成==3的話 只會跑一個 不會跑五個
01/02 09:33, 6F

01/02 09:34, , 7F
原因是,在你第一行之後,fscanf就爛掉了,之後傳回值都是
01/02 09:34, 7F

01/02 09:35, , 8F
0,用!=EOF(-1) 的話,也不會往下面讀,只會一直丟上一次
01/02 09:35, 8F

01/02 09:35, , 9F
讀到的,而用==3的話就變 0==3, 只能讀一個.
01/02 09:35, 9F

01/02 09:40, , 10F
關鍵還是在:你沒處理換行 http://codepad.org/fr3t0JBo
01/02 09:40, 10F

01/02 09:43, , 11F
用\n的話成功 如果是%c後加空白呢?
01/02 09:43, 11F

01/02 09:43, , 12F
感謝樓上們的回覆T.T
01/02 09:43, 12F

01/02 21:24, , 13F
是)後面加空白吧@@?
01/02 21:24, 13F
文章代碼(AID): #1F0BIOd2 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1F0BIOd2 (C_and_CPP)