一、自行编写函数,实现复制。
算法流程如下:
1
以读的方式打开源文件,以写的方式打开目标文件;
2
每次读一个字节,并写到目标文件中,直到达到文件结尾为止;
3
关闭两个文件。
二、调用系统命令。
stdlib.h中的system函数,可以执行系统命令行支持的命令。
int
system(char
*cmd)
调用时就是执行cmd中的指令。
1
对于windows,就是执行dos命令,可以调用
system("copy
/Y
src_file
target_dir")
其中src_file为源文件,而target_dir就是目标文件夹。
2
对于Linux,需要执行shell命令cp,如下
system("cp
src_file
target_dir")
C语言里的system("")函数可以执行命令行的几乎所有指令,把命令行输入的内容作为参数传入即可。复制文件的话 应该是:copy 源文件 目的路径。例如命令行里的 copy c:\test.txt d:\text.txt,
也就是C语言里的:system("copy c:\test.txt d:\text.txt")
或者这样
char c[50] = "copy c:\test.txt d:\text.txt"
system(c)
不应对非文本文件使用fgetc等易受干扰的函数,建议用fread,fwrite读写二进制文件#include "stdio.h"
/* 保护硬盘,绝对不要一个字节一个字节复制 */
#define SIZEOFBUFFER 256*1024L /* 缓冲区大小,默认为256KB */
long filesize(FILE *stream)
{
long curpos, length
curpos = ftell(stream)
fseek(stream, 0L, SEEK_END)
length = ftell(stream)
fseek(stream, curpos, SEEK_SET)
return length
}
int copyfile(const char* src,const char* dest)
{
FILE *fp1,*fp2
int fsize,factread
static unsigned char buffer[SIZEOFBUFFER]
fp1=fopen(src,"rb")
fp2=fopen(dest,"wb+")
if (!fp1 || !fp2) return 0
for (fsize=filesize(fp1)fsize>0fsize-=SIZEOFBUFFER)
{
factread=fread(buffer,1,SIZEOFBUFFER,fp1)
fwrite(buffer,factread,1,fp2)
}
fclose(fp1)
fclose(fp2)
return 1
}
int main()
{
copyfile("file1.txt","file2.txt")
return 0
}