Re: [問題] cin 與 eof的問題

看板C_and_CPP作者 (あら~)時間14年前 (2010/05/28 16:24), 編輯推噓7(706)
留言13則, 3人參與, 最新討論串2/3 (看更多)
※ 引述《BSpowerx (B.S)》之銘言: : 最近寫程式,需要用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 EOF不適合拿來當分隔符號 因為吃到EOF以後,檔案就視同結束 雖然ASCII裡面有EOF這個字, 但是像fopen這種函式在text mode下遇到這個 "字" 的行為 跟遇到真正檔案結尾的行為是一樣的 其實你正在要求電腦做一件很矛盾的事情 你要求他在看到檔案結尾以後繼續往下讀資料 "同學~今天我們的作業是從課本的最後一頁開始往後寫十頁喔~明天交" 你既然知道有五組資料,那為什麼不 1. 一組資料在一行裡面,用逗點分開,遇到\n就結束 2. 一項資料佔一行,空行代表結束 3. (請自行發揮創意) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.164.222

05/28 16:30, , 1F
因為是ACM題目要求用EOF分隔的orz
05/28 16:30, 1F

05/28 16:49, , 2F
你可以把題目貼出來嗎XDDDDDD 還沒看過這種要求
05/28 16:49, 2F

05/28 16:52, , 3F
10134 看似很簡單,但弄了半天卻還是無法AC 囧rz
05/28 16:52, 3F

05/28 17:19, , 4F
eof 不是一定要用來標示檔案結尾, 在標準輸入的時候
05/28 17:19, 4F

05/28 17:20, , 5F
為了搭配istream_iterator 把輸入放在容器內, 也是要
05/28 17:20, 5F

05/28 17:20, , 6F
用 eof 結束
05/28 17:20, 6F

05/28 17:28, , 7F
剛看了一下10134, 是要用空白行分別不同的test case
05/28 17:28, 7F

05/28 17:28, , 8F
原 po 看錯了吧 ?
05/28 17:28, 8F

05/28 17:40, , 9F
是我看錯了XD 確實是用 eof 結束每個test case
05/28 17:40, 9F

05/28 17:45, , 10F
^所有
05/28 17:45, 10F

05/28 17:47, , 11F
there is also a blank line between two consecutive
05/28 17:47, 11F

05/28 17:48, , 12F
inputs. Input consists of a sequence of fish, bait
05/28 17:48, 12F

05/28 17:48, , 13F
and lunch instructions, terminated by the eof.
05/28 17:48, 13F
文章代碼(AID): #1B_ttODf (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1B_ttODf (C_and_CPP)