1

[请不要评论使用 Turbo C++。我知道它已经过时了,但我们只接受这种方式。] 有点类似的错误在这里为什么我在解析器提取的每个包含之后都会得到一个 'ÿ' 字符?- 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();
}

我面临的问题是它在“另一个”文件的末尾附加了ÿ字符。

例如:“Employee”中的文本是,ID:1 Name:abc 然后它复制到“another”的文本是:ID:1 Name:abcÿ

4

2 回答 2

2

读完最后一个字符后,eof()检查不会返回 true;您尝试阅读结尾之前,它一直是错误的。因此,与其在 while 循环条件中检查 eof,不如在阅读之后(但在写入之前)检查它,然后中断。

(顺便解释一下:ÿ 是值 0xFF 的 ANSI 字符表示,即 -1。这是get()返回信号 EOF 的内容。因此,如果您想要,而不是检查eof(),您可以查看 char 是否等于-1。)

于 2013-10-26T08:33:28.953 回答
1
while(!read_file.eof())

总是错的。你需要

while (read_file.get(ch))

或者

while ((ch = read_file.get()) != EOF)
于 2013-10-26T08:34:46.537 回答