| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1960 人关注过本帖
标题:[求助]用c程序复制*.exe
只看楼主 加入收藏
momo_2003
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-5-2
收藏
 问题点数:0 回复次数:21 
[求助]用c程序复制*.exe

我编了一段c的程序,意图是想把一个文件夹中的*.exe文件复制到另一个文件夹中,以下是我编的代码,不知哪里出错了,复制的exe文件运行的和原文件完全不一样了~~~崩溃了啊!!!哪位大侠帮忙看看,谢谢 ^o^ :


/*复制c目录下的reg.exe到c目录下的以startup命名的exe文件*/
#include <stdio.h>
#include "string.h"
#include "stdlib.h"
//////////////////////////////////////////////////////////////

int main()
{
int ch;
FILE *fp1,*fp2;
fp1 = fopen("c:\\reg.exe","ab+");//原始文件名为:c:\\reg.exe
if(fp1==NULL)
{
printf("Create StartUpCopy.exe Failed!\n");
fclose(fp1);
return -1;
}
else
{
fp2 = fopen("c:\\startup","wb+");
if(fp2==NULL)
{
printf("Create StartUpCopy.exe Failed!\n");
fclose(fp2);
return -1;
}
else
{
int buffer[65535];
long offset,offset1,offset2;
fseek(fp1,01,SEEK_SET);
offset1 = ftell(fp1);//文件首指针地址
fseek(fp1,01,SEEK_END);
offset2 = ftell(fp1);//文件尾指针地址
offset=offset2-offset1+1;//文件长度
fread(buffer,1,offset,fp1);
fwrite(buffer,1,offset,fp2);
}
//关闭两个文件
fclose(fp1);
fclose(fp2);
}
}

如果这位大虾有更好的程序,不令赐教。^o^谢谢

搜索更多相关主题的帖子: exe 
2006-05-02 00:30
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
不用你上面那么麻烦,找找旧贴有,很简单的

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-02 00:31
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
int buffer[65535];
long offset,offset1,offset2;
fseek(fp1,01,SEEK_SET);
offset1 = ftell(fp1);//文件首指针地址
fseek(fp1,01,SEEK_END);
offset2 = ftell(fp1);//文件尾指针地址
offset=offset2-offset1+1;//文件长度
fread(buffer,1,offset,fp1);
fwrite(buffer,1,offset,fp2);
}


根本不用这么麻烦

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-02 00:32
momo_2003
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-5-2
收藏
得分:0 

用二进制打开和复制可以吗?

2006-05-02 00:33
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
可以,直接读字符也行,打开一个,创建一个,几句话的问题,你再想想

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-02 00:35
momo_2003
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-5-2
收藏
得分:0 
但是用字符打开我试过也不行,就是几句话的问题,困扰我一天了,崩溃了,麻烦大虾帮忙,谢谢你拉,呵呵
2006-05-02 00:36
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 

我原来写的,你改改文件名和后缀和路径


#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char cha;
FILE *fpa, *fpb;

if ((fpa = fopen("d:\\tcwork\\filea.cpp","rb")) == NULL)
{
exit(1);
}
if ((fpb = fopen("d:\\tcwork\\fileb.cpp","wb")) == NULL)
{
exit(1);
}

cha = fgetc(fpa);
while (!feof(fpa))
{
fputc(cha, fpb);
cha = fgetc(fpa);
}
fclose(fpa);
fclose(fpb);

return 0;
}


日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-02 00:39
momo_2003
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-5-2
收藏
得分:0 

是这样的么:
while((ch=fget(fp1))!=EOF)
{
fputc(ch,fp2);
}
我试过的,也不行的 不知道怎么搞的

2006-05-02 00:40
momo_2003
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-5-2
收藏
得分:0 
谢谢你拉  呵呵
2006-05-02 00:40
momo_2003
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-5-2
收藏
得分:0 
但是我觉得这两个没有什么本质上的不同,为什么结果不一样呢?
请教~~~
2006-05-02 00:46
快速回复:[求助]用c程序复制*.exe
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018608 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved