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 を返しません。最後まで読み込もうとするまで false のままです。そのため、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 に答える