[请不要评论使用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();
}
我遇到的问题是它会在“另一个”文件的末尾附加 ÿ 字符。
例如:“员工”中的文字是, ID:1 名称:ABC 然后它复制到“另一个”的文本是: ID:1 名称:abcÿ
答案 0 :(得分:2)
一旦你读完最后一个字符,eof()
检查就不会返回true;在之后你试图阅读结束时,它会保持为假。因此,不要在while循环条件下检查eof,而是在读取之后(但在写入之前)检查它,然后中断。
(顺便提一下,有点解释:ÿ是值0xFF的ANSI字符表示,也就是说,-1。这是get()
返回信号EOF的内容。所以如果你想要,而不是检查eof()
,你可以看到char是否等于-1。)
答案 1 :(得分:1)
while(!read_file.eof())
总是错的。你需要
while (read_file.get(ch))
或
while ((ch = read_file.get()) != EOF)