实现dos下的copy功能,为什么每一次都多了一个字节(FILE),请高手回答

luoxq_263 2005-04-16 03:12:42
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc , char *argv[])
{
int i,j;
FILE *fpsource,*fpdest;
char *source,*dest;
for (i=1;i<argc;i+=2)
{
if (strcmp(argv[i],"-?")==0||strcmp(argv[i],"/?")==0)

printf("%s\n","usage: -s source file -d dest file");
if (strcmp(argv[i],"-s")==0)
{
j=i+1;
source=malloc(sizeof(argv[j]));
strcpy(source,argv[j]);

}
if (strcmp(argv[i],"-d")==0)
{
j=i+1;
dest=malloc(sizeof(argv[j]));
strcpy(dest,argv[j]);
}
}

if((fpsource=fopen(source,"r"))==NULL)
{
printf("can not open source file\n");
free(source);
free(dest);
exit(0);
}
if((fpdest=fopen(dest,"w"))==NULL)
{
printf("can not open dest file\n");
free(source);
free(dest);
exit(0);
}
while(!feof(fpsource))
{
fputc(fgetc(fpsource),fpdest);
}
fclose(fpsource);
fclose(fpdest);
free(source);
free(dest);
return 1;
}
应当是在while的问题吧,是用gcc version 3.2 (mingw special 20020817-1)
...全文
98 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
luoxq_263 2005-04-16
  • 打赏
  • 举报
回复
为什么说sizeof是错的呢?我按要求能实现我的功能啊
ysbcg 2005-04-16
  • 打赏
  • 举报
回复
解释:原来的程序出问题的原因是由于feof操作在文件指针超过了文件大小的时候才返回true
而最后一次读取会得到ff
而只有通过这种方式读取,文件的真实大小才能不变
而且不会由于文件内部有结束符而出错。
luoxq_263 2005-04-16
  • 打赏
  • 举报
回复
不含"\0"的字符串的大小啊,隐性的错误给解释解释
ysbcg 2005-04-16
  • 打赏
  • 举报
回复

int rn;
fpi=fopen(filenamei,"rb");
fpo=fopen(filenameo,"wb");
for(;;) {
rn=fread(&c,1,1,fpi);
if(rn!=1) break;
putc(c,fpo);
}
luoxq_263 2005-04-16
  • 打赏
  • 举报
回复
rb是从文件首部开始读的意思,sizeof得到是含"\0"字符串的大小啊
pcboyxhy 2005-04-16
  • 打赏
  • 举报
回复
source=malloc(strlen(argv[j])+1); // sizeof( )是错的


pcboyxhy 2005-04-16
  • 打赏
  • 举报
回复
if((fpsource=fopen(source,"rb"))==NULL)//
{
printf("can not open source file\n");
free(source);
free(dest);
exit(0);
}
if((fpdest=fopen(dest,"wb"))==NULL) //
pcboyxhy 2005-04-16
  • 打赏
  • 举报
回复
while(1)
{
char c;
c=fgetc(fpsource);
if(feof(fpsource))
break;
fputc(c, fpdest);
}
luoxq_263 2005-04-16
  • 打赏
  • 举报
回复
现在只能实现文本的copy,二进制的不行,或有问题
luoxq_263 2005-04-16
  • 打赏
  • 举报
回复
问题没看懂吗?每次实现copy后多了一个字节,源文件1521个字节, 目标文件是1522个字节
bm1408 2005-04-16
  • 打赏
  • 举报
回复
??
luoxq_263 2005-04-16
  • 打赏
  • 举报
回复
vc6也有此问题

69,373

社区成员

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

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