[問題] cin 與 eof的問題

看板C_and_CPP作者 (B.S)時間14年前 (2010/05/28 01:53), 編輯推噓1(106)
留言7則, 4人參與, 最新討論串1/3 (看更多)
最近寫程式,需要用eof來判斷資料輸入的終止 大致如下 for(a=0; a<5; a++){ while(cin >> input){ //do something } } 以上程式表示我需要輸入5組資料, 每組資料中又有不確定的筆數,要用eof來判斷終止 但我一旦輸入了一次eof, 程式卻會自動將我後面所有的cin通通判斷為eof 也就是a=1,2,3,4的時候就無法進入while裡面。 把cin部份改為scanf的話 while( scanf("%s", input) != EOF ) 雖然不會有上面問題, 但^Z卻要輸入兩次才會讀到EOF... 只輸入一次^Z怎麼樣都無法跳出迴圈,一定要輸入第二次 整個不知道該怎麼修改啊orz -- ██ ▄▄ ▄▄▄ ▄ ▄ ________ ▄▄ (Nintendo) ▄ ▄ ▄▄▄▄  ̄ ̄ ̄ ̄ ▄▄▄▄▄ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.199.88

05/28 02:44, , 1F
是什麼樣的資料或根據告訴你 scanf() 有傳回 EOF 的可能?
05/28 02:44, 1F

05/28 02:46, , 2F
cin 那邊也是。你的程式並沒有判斷 eof 的地方,你又怎麼
05/28 02:46, 2F

05/28 02:46, , 3F
知道程式自動把你後面的輸入都判斷成 eof?
05/28 02:46, 3F

05/28 02:55, , 4F
EOF = End of File
05/28 02:55, 4F

05/28 02:58, , 5F
遇到eof, eofbit 會升起, 除非用clear還原, 不然後面
05/28 02:58, 5F

05/28 02:58, , 6F
都沒辦法繼續讀
05/28 02:58, 6F

05/28 12:47, , 7F
找到了cin.clear() @@ 感謝
05/28 12:47, 7F
文章代碼(AID): #1B_h6530 (C_and_CPP)
文章代碼(AID): #1B_h6530 (C_and_CPP)