Re: [問題] cin 與 eof的問題
※ 引述《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
05/28 16:30, 1F
推
05/28 16:49, , 2F
05/28 16:49, 2F
→
05/28 16:52, , 3F
05/28 16:52, 3F
推
05/28 17:19, , 4F
05/28 17:19, 4F
→
05/28 17:20, , 5F
05/28 17:20, 5F
→
05/28 17:20, , 6F
05/28 17:20, 6F
推
05/28 17:28, , 7F
05/28 17:28, 7F
→
05/28 17:28, , 8F
05/28 17:28, 8F
推
05/28 17:40, , 9F
05/28 17:40, 9F
推
05/28 17:45, , 10F
05/28 17:45, 10F
推
05/28 17:47, , 11F
05/28 17:47, 11F
→
05/28 17:48, , 12F
05/28 17:48, 12F
→
05/28 17:48, , 13F
05/28 17:48, 13F
討論串 (同標題文章)