c语言从文件读入输出到另一文件中为什么有一个y上面加两点的符号?
解决时间 2021-02-21 16:36
- 提问者网友:我一贱你就笑
- 2021-02-20 23:32
#include
#include
int main(void)
{
char filename1[30],filename2[30];
scanf("%s",filename1);
FILE *fp1,*fp2;
if((fp1=fopen(filename1,"r"))==NULL)
{
printf("open file error");
exit(1);
}else
{
scanf("%s",filename2);
fp2=fopen(filename2,"w");
while(!feof(fp1))
{
fputc(fgetc(fp1),fp2);
}
}
fclose(fp1);
fclose(fp2);
return 0;
}
最佳答案
- 五星知识达人网友:佘樂
- 2021-02-21 00:13
这个符号应该出现在最后的吧。其实是你多读了一个字符。你可以这么做
增加一个变量,char temp;
然后把while 改成如下形式
while(!feof(fp1))
{
temp = fgetc(fp1);
if (!feof(fp1))
fputc(temp,fp2);
}
全部回答
- 1楼网友:人類模型
- 2021-02-21 01:08
feof(in) 测定是否遇到 eof, 这个工作要在 读语句后面 即时做。 while(!feof(in)) { ch=fgetc(in); ...}; fgetc 读到 eof 后,你继续执行fputc(ch,out); 就多输出了一个y上面加两点,到下一轮循环开始,才做 (!feof(in)) 的判断,才退出。 改成: while(1) { ch=fgetc(in); // 读 if ( feof(in) ) break; // 判断文件指针是否到达eof,若是,则跳出循环,不再输出 fputc(ch,out); fputc(ch,stdout); }
我要举报
大家都在看
推荐资讯