文件处理,在复制内容时插入ÿ字符

时间:2013-10-26 08:28:12

标签: c++ c file turbo-c++

[请不要评论使用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ÿ

2 个答案:

答案 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)