2013-10-26 17 views
1

[請不要評論使用Turbo C++。我知道它已經過時,但我們只是這樣教。] 有點類似的錯誤在這裏Why do I get a 'ÿ' char after every include that is extracted by my parser? - C但我不能將它與我的代碼 - 嗯,我是一個新手。文件處理,複製內容時插入ÿ字符

#include<fstream.h> 
#include<conio.h> 
void main() 
{ 
clrscr(); 
char ch; 
ifstream read_file; 
read_file.open("Employee.txt"); 
ofstream write_file; 
write_file.open("Another.txt"); 

while(!read_file.eof()) 
{ 
/*Also when I use, write<<read_file.get(ch) in this block instead of the two statements below, it writes some kind of address in the file. Please tell me about that too why it happens. */ 

    read_file.get(ch); 
    write_file<<ch; 
} 
read_file.close(); 
write_file.close(); 
getch(); 
} 

我面臨的問題是,它在「另一個」文件的末尾附加ÿ字符。

如:1個 名稱:ABC 則文本將其複製到 「另一個」 是: ID:1個 名稱:abcÿ

+4

運行,不走,從這個類。 –

+0

[必須閱讀](http://stackoverflow.com/q/5605125/1870232) – P0W

回答

2

eof()檢查韓元的 「僱員」 是, ID文本一旦你讀完了最後一個字符,它就不會返回真;它在之後保持假,直到您嘗試讀取結尾。因此,不要在while循環條件下檢查eof,在讀取之後(但在寫入之前)檢查它,然後中斷。

(順便說一句,一些解釋:y是爲0xFF,這是說的ANSI字符表示,-1這是get()返回信號EOF所以,如果你想的不是檢查eof(),。您可以看到字符是否等於-1。)

+0

讓我們考慮一下我在問題中提到的文字,即ID和名稱。 循環時,它會找到'c'(文件中的最後一個字符)並執行循環,並將c複製到文件中。之後,它再次檢查應該返回true的end_of_file,使得while條件爲false,並且控制不應該進入循環。 也許,我誤解了事情。請指導我的理解有什麼問題。 –

+0

我在這裏http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong 感謝您的回答。 –

1
while(!read_file.eof()) 

總是錯的。您需要

while (read_file.get(ch)) 

while ((ch = read_file.get()) != EOF) 
+0

好的,但是你能告訴我爲什麼它會寫入地址,如果while塊中的代碼被替換爲單個語句嗎? –

+0

我不明白你的問題。什麼編寫哪個地址? –

+0

當while語句中的兩個語句被單個語句替換時,寫入<< read.get(ch),然後將某些類型的地址寫入文件「Another」。 這是爲什麼呢? –

相關問題