[問題] 讀檔時EOF的問題

看板C_and_CPP (C/C++)作者 (感性之光)時間16年前 (2009/11/16 12:42), 編輯推噓2(209)
留言11則, 3人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) while(!read.eof()&&c!='\n') {read.get(c); cout<<c; }//end while 我用這個去判斷有沒有換行或是檔案結束 可是最後一行的最後一個字母總是會多印一次 完全不知道為什麼Q___Q 我讀的檔案: 4 Radar A man, a plan, a cat, a canal; Panama! A man, a plan, a cat, a ham, a yak, a yam, a hat, a canal--Panama! I’m not a palindrome.<---他最後一個.都會印兩次 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) dev c++ 請各位大大幫我解惑一下 感恩! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.249.144

11/16 12:49, , 1F
不知道是不是因為要到底了以後再讀一次, EOF才會成立的
11/16 12:49, 1F

11/16 12:50, , 2F
關係....@_@"
11/16 12:50, 2F

11/16 12:50, , 3F
Step by Step trace一下, 或者每次read前把c清成'\0'查
11/16 12:50, 3F

11/16 12:50, , 4F
查看....@_@"
11/16 12:50, 4F

11/16 13:13, , 5F
要某一次 get 抓不到值, eof 才會被 set 起來
11/16 13:13, 5F

11/16 13:14, , 6F
那有解決的辦法嗎
11/16 13:14, 6F

11/16 13:14, , 7F
把 oef 判斷放在 get 和 cout << c; 之間呀
11/16 13:14, 7F

11/16 13:15, , 8F
像是 do { read.get(c); if(read.eof()) break; cout << c;}
11/16 13:15, 8F

11/16 13:16, , 9F
所以用個if(read.eof()) break;嗎?
11/16 13:16, 9F

11/16 13:16, , 10F
這樣如果 get(c); 沒抓到, 就可以被下一行 eof 判定發現
11/16 13:16, 10F

11/16 13:18, , 11F
噢噢!
11/16 13:18, 11F
文章代碼(AID): #1B0DWZba (C_and_CPP)
文章代碼(AID): #1B0DWZba (C_and_CPP)