【C语言】关于向文件读写字符的问题。万分感谢!!

2024-12-25 21:25:21
推荐回答(3个)
回答1:

他这个代码写的有点小问题, feof() 函数返回的是最后一次读出后流是否结束,而不是流是否已经到达终点(即下次读出会遇到EOF)。所以fgetc最后会遇到一个EOF,即-1,多出来的一个字符不是空格,其内容就是-1的char,即0xFF。正确的代码应该这样改。
ch = fgetc(in);
while(!feof(in))
{
fputc(ch,out);
putchar(ch);
ch = fgetc(in);
}

再随便说一句,谭的书还是别看了,误人子弟的书。

回答2:

就是while(!feof(in))的问题,只要in的文件指针还没有指向EOF,下面的读写就执行。直到把-1读出来写到outfile里面,这时候in指向EOF,循环结束。那个-1就是多出来的空格(我这里是个y上面加两个点)。

回答3:

fgetc的原型是int fgetc(FILE *stream);
建议int ch;这样定义

while(!feof(in))
{
ch = fgetc(in);
if(ch==EOF) break;/*这样试试看,怀疑文件尾时,ch是-1,其实不管怎么样,这时候不需要输出ch了*/
fputc(ch,out);
putchar(ch);
}