从一个文件复制内容到另一个文件多出了一个字符

tracyjk 2010-12-22 09:43:29
#include <stdio.h>
#include <stdlib.h>
void main()
{
FILE *in,*out;
char inname[10],outname[10];
char ch;
printf("Put infile name:\n");
scanf("%s",inname);
printf("Put outfile name\n");
scanf("%s",outname);
if ((in=fopen(inname,"r"))==NULL)

{
printf("There is no existing %s\n",inname);
exit(0);

}

if ((out=fopen(outname,"w"))==NULL)
{
printf("NO existing file,then creat\n");
if ((out=fopen(outname,"w+"))==NULL)
{
printf("Error\n");
exit(0);
}
}
while(!feof(in))

{ch=fgetc(in);
fputc(ch,out);

putchar(ch);
}
fclose(in);
fclose(out);
}


结果如下:
12345
ÿ

用gdb调试后发现读取到‘\n’后还会再读取一个空的字符,而不是流上的文件结束符
哪个大家能帮忙解释下最后一个字符出现的原因及怎么更改
...全文
178 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mstlq 2010-12-22
  • 打赏
  • 举报
回复
请楼主将某部分改成下面形式吧……
while(1)

{ch=fgetc(in);
if(feof(in)) break;
fputc(ch,out);
putchar(ch);
}


原因请自行分析
测试NULL 2010-12-22
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
void main()
{
FILE *in,*out;
char inname[10],outname[10];
char ch;
printf("Put infile name:\n");
scanf("%s",inname);
printf("Put outfile name\n");
scanf("%s",outname);
if ((in=fopen(inname,"r"))==NULL)

{
printf("There is no existing %s\n",inname);
exit(0);

}

if ((out=fopen(outname,"w"))==NULL)
{
printf("NO existing file,then creat\n");
if ((out=fopen(outname,"w+"))==NULL)
{
printf("Error\n");
exit(0);
}
}
while(1)

{
ch=fgetc(in);
if(ch == EOF)
break;
fputc(ch,out);

putchar(ch);
}
fclose(in);
fclose(out);
}
这样改试试
Soulic 2010-12-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 tracyjk 的回复:]

引用 2 楼 hnuqinhuan 的回复:
貌似是因为啦 \n 改成了两个一个换行 和 回车


要怎么改进呢?
[/Quote]
\r\n
tracyjk 2010-12-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hnuqinhuan 的回复:]
貌似是因为啦 \n 改成了两个一个换行 和 回车
[/Quote]

要怎么改进呢?
tracyjk 2010-12-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pluminsnow 的回复:]
你把文件的读写模式都改成banary模式试试
[/Quote]
读写都改成了banary模式也不行,还是会有那个符号
無_1024 2010-12-22
  • 打赏
  • 举报
回复
ÿ的ascll值为-1
無_1024 2010-12-22
  • 打赏
  • 举报
回复
貌似是因为啦 \n 改成了两个一个换行 和 回车
pluminsnow 2010-12-22
  • 打赏
  • 举报
回复
你把文件的读写模式都改成banary模式试试

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧