永发信息网

大哥大姐看下这个C程序哪里错了?

答案:3  悬赏:0  手机版
解决时间 2021-07-18 20:15
  • 提问者网友:暗中人
  • 2021-07-18 07:06

名称 将一个磁盘文件中的信息复制到另一个磁盘文件中!

#include <stdio.h>
#include <stdlib.h>
void main()
{

FILE *in,*out;
char ch,infile[10],outfile[10];
printf("请输入infile名字:");
scanf("%s",infile);
printf("请输入outfile名字:");
scanf("%s",outfile);
if((in=fopen(infile,"r"))==NULL)
{
printf("cannot open infile\n");
exit(0);
}
if((out=fopen(outfile,"r"))==NULL)
{
printf("cannot open outfile\n");
exit(0);
}
while(!feof(in))
fputc(fgetc(in),out);
fclose(in);
fclose(out);
}

帮我看下

最佳答案
  • 五星知识达人网友:风格不统一
  • 2021-07-18 07:21

你好.


你程序中的outfile打开方式错了. 你用的r是读.


应该换成w.



if((out=fopen(outfile,"w"))==NULL) //这里.
{
printf("cannot open outfile\n");
exit(0);
}

全部回答
  • 1楼网友:未来江山和你
  • 2021-07-18 08:39

if((out=fopen(outfile,"r"))==NULL)这句改为if((out=fopen(outfile,"w"))==NULL),估计这是你写错了,不是问题本身。问题本身下面语句有问题:

while(!feof(in)) fputc(fgetc(in),out);

原因是:会发现多输出了一个FFFFFFFF到目的文件里,原因就是在读完最后一个字符后,fp->flag仍然没有被置为_IOEOF,因而feof()仍然没有探测到文件结尾。直到再次调用fgetc()执行读操作,feof()才能探测到文件结尾。这样就多输出了一个-1(即FFFFFFFF)。

应该改为:

ch = fgetc(in);

while(!feof(in)) fputc(ch,out);

  • 2楼网友:三千妖杀
  • 2021-07-18 08:14
------------------------------------------------------------ 欢迎快来加入_编程爱好者团队! QQ群:61749622 团队地址为: http://wenwen.soso.com/t/TeamHome.e?sp=391723。 ------------------------------------------------------------
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯