C语言复制文件函数程序出错
发布网友
发布时间:2022-04-30 15:22
我来回答
共4个回答
热心网友
时间:2022-06-26 05:26
程序没有任何问题,要D:\1.EXE能够执行,要保证两点:
1.C:\1.EXE这个文件存在
2.C:\1.EXE是能正常运行,不然复制过去的D:\2.EXE他就不能正常运行
Problem:你在运行D:\2.EXE文件时,C:\1.EXE能正常运行吗?
#include<stdio.h>
#include<stdlib.h>
#define MAX_PATH 100
void copyme(char *file1,char *file2)
{
char tempbuf[MAX_PATH];
FILE *sfp,*dfp;
if((sfp=fopen(file1,"rb"))==NULL)
{
printf("can't find %s\n",file1);
exit(0);
}
if((dfp=fopen(file2,"wb"))==NULL)
{
printf("creat %d unseccessful\n",file2);
exit(0);
}
while(!feof(sfp))
{
fread(tempbuf,1,1,sfp);
fwrite(tempbuf,1,1,dfp);
}
fclose(sfp);
fclose(dfp);
}
int main()
{
copyme("c:\\1.exe","d:\\2.exe");
return 0;
}
热心网友
时间:2022-06-26 05:27
运行着的程序,用 taskkill 停下来
Windows XP 有 taskkill, 别的操作系统 有可能用别的名字。
void main()
{
char cm1[]="taskkill /IM 2.exe";
char cm[]="copy C:\\1.exe D:\\2.exe";
system(cm1);
system(cm);
}
热心网友
时间:2022-06-26 05:27
1、如果2.exe正在运行,那么打开文件2.exe写入操作会失败的,Windows会对文件2.exe进行保护,并拒绝访问。
2、楼主所列程序似乎不能得到正常的结果。如代码:
fread(tempbuf,1,1,sfp);
fwrite(tempbuf,1,1,dfp);
应该做读取保护吧:
if (fread(tempbuf,1,1,sfp) == 1)
fwrite(tempbuf,1,1,dfp);
否则,2.exe会比1.exe多1个字节。
热心网友
时间:2022-06-26 05:28
用windows.h中的CopyFile这个api
以下是函数原型
BOOL CopyFile(
LPCTSTR lpExistingFileName, // name of an existing file
LPCTSTR lpNewFileName, // name of new file
BOOL bFailIfExists // operation if file exists
);