通过Windows的CTRL+C、CTRL+V可以非常方便的复制文件,实际内部也一样是通过读写文件来完成的,通过Windows的命令行我们也可以使用copy.exe的相关命令来复制文件。本文就模仿copy.exe程序制作一个文件复制的程序。具体代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char* argv[])
{
if (argc < 3)
{
printf(“file.exe src dest\n”);
return -1;
}
// 根据输入进来的文件分别以二进制方式打开文件
FILE* src = fopen(argv[1], “rb”);
if (NULL == src) return -2;
FILE* dest = fopen(argv[2], “wb”);
if (NULL == dest)
{
fclose(src);
return -2;
}

char buf[1024];
int size = 0;
// 读取src文件内容
while ((size = fread(buf, 1, 1024, src)) > 0)
{
// 将读取到的内容写入到dest中
fwrite(buf, size, 1, dest);
}

fclose(src);
fclose(dest);
system(“pause”);
return 0;
}

将程序编译后,在命令行下使用 file.exe src dest 这样的格式,即可赋值src文件为dest文件。Windows和Unix/Linux以上代码都可以正常运行。我们使用的是二进制方式打开文件,读取每一个字节再写入到另外文件中。