奇怪的符号最后附加

时间:2012-06-26 19:36:23

标签: c++

我正在尝试从文件中读取字符并将其写入另一个文件。问题是,尽管写入了所有内容,但是在写入文件的下一行中会附加一个奇怪的符号。我的代码是:

#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;
}

可能是什么原因?

3 个答案:

答案 0 :(得分:2)

这是因为您在检查ch是否为EOF之前将{{1}}写入另一个文件,因此也会写入。{/ p>

答案 1 :(得分:1)

考虑一下如果检查已经使用该返回值的getc()的返回值会发生什么。

// simple fix
ch = getc(f);
while (ch != EOF) {
    putc(ch, g);
    ch = getc(f);
}

答案 2 :(得分: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);
}