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 回答