看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
BSpowerx:因為是ACM題目要求用EOF分隔的orz 05/28 16:30
chchwy:你可以把題目貼出來嗎XDDDDDD 還沒看過這種要求 05/28 16:49
BSpowerx:10134 看似很簡單,但弄了半天卻還是無法AC 囧rz 05/28 16:52
loveme00835:eof 不是一定要用來標示檔案結尾, 在標準輸入的時候 05/28 17:19
loveme00835:為了搭配istream_iterator 把輸入放在容器內, 也是要 05/28 17:20
loveme00835:用 eof 結束 05/28 17:20
loveme00835:剛看了一下10134, 是要用空白行分別不同的test case 05/28 17:28
loveme00835:原 po 看錯了吧 ? 05/28 17:28
loveme00835:是我看錯了XD 確實是用 eof 結束每個test case 05/28 17:40
loveme00835: ^所有 05/28 17:45
loveme00835:there is also a blank line between two consecutive 05/28 17:47
loveme00835:inputs. Input consists of a sequence of fish, bait 05/28 17:48
loveme00835:and lunch instructions, terminated by the eof. 05/28 17:48