fread、fwrite 制作文件复制程序

通过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以上代码都可以正常运行。我们使用的是二进制方式打开文件,读取每一个字节再写入到另外文件中。

发表评论