我正在尝试从文件中读取字符并将其写入另一个文件。问题是,尽管写入了所有内容,但是在写入文件的下一行中会附加一个奇怪的符号。我的代码是:
#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;
}
可能是什么原因?
答案 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);
}