0

ファイルから文字を読み取り、別のファイルに書き込もうとしています。問題は、すべてが書き込まれているにもかかわらず、書き込みファイルの次の行に奇妙なシンボルが追加されていることです。私のコードは次のとおりです。

#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<stdio.h>

using namespace std;

int main(){

    FILE *f, *g;
    int ch;
    f = fopen("readfile", "r");
    g = fopen("writefile", "w");
    while(ch != EOF){
            ch = getc(f);
            putc(ch, g);
    }
    fclose(f);
    fclose(g);
return 0;
}

その理由は何ですか?

4

3 に答える 3

2

それが であるchかどうかを確認する前に、他のファイルに書き込むためですEOF

于 2012-06-26T19:39:01.703 に答える
1

getc() の戻り値を既に使用した後にチェックするとどうなるか考えてみてください。

// simple fix
ch = getc(f);
while (ch != EOF) {
    putc(ch, g);
    ch = getc(f);
}
于 2012-06-26T19:41:49.423 に答える
1

奇妙なシンボルは EOF 定数です。

ch = getc(f); // we've read a symbol, or EOF is returned to indicate end-of-file
putc(ch, g); // write to g whether the read operation was successful or not

修正は

ch = getc(f);
while (ch != EOF)
{
    putc(ch, g);
    ch = getc(f);
}
于 2012-06-26T19:48:54.510 に答える