C语言实现拷贝文件操作【fread和fwrite函数】

C语言实现拷贝文件操作【fread和fwrite函数】

#include
#include
#include

void menu()
{
	printf("===============================\n");
	printf("1、拷贝文件\n");
	printf("2、清屏\n");
	printf("3、退出\n");
	printf("===============================\n");

}

void copyfile()
{
	printf("请输入源文件:");
	char srcfile[512] = { 0 };
	scanf("%s", srcfile);

	printf("请输入目标文件:");
	char dstfile[512] = { 0 };
	scanf("%s", dstfile);

	// 打开 和 创建文件
	FILE *rfp = fopen(srcfile, "rb+");
	if (rfp == NULL)
	{
		printf("fopen rfp error\n");
		return;
	}
	FILE *wfp = fopen(dstfile, "wb+");
	if (rfp == NULL)
	{
		printf("fopen wfp error\n");
		return;
	}

	//存储读取文件的内容
	char tmp[1000] = { 0 };
	int ret1 = 0,ret2 = 0;

	// 循环读取文件
	while (!feof(rfp))
	{
		ret1 = fread(tmp, 1,1000, rfp);         //  块大小1字节 , 块数目为 1024 , 返回值 是 读取的块数目
		printf("已经读取%d \n", ret1);
		if (ret1 == 0)
		{
			break;
		}


		ret2 = fwrite(tmp,  1, 1000, wfp);
		printf("已经写入%d \n", ret2);         //最后一次,虽然数据不够1000,但是申请的buf空间是1000

		ret1 = 0;
		ret2 = 0;
	}


	// 关闭文件
	if (rfp != NULL)
	{
		fclose(rfp);
		rfp = NULL;
	}
	if (wfp != NULL)
	{
		fclose(wfp);
		wfp = NULL;

	}
}

int main()
{
	int cmd;

	while (1)
	{
		menu();
		printf("cmd:");
		scanf("%d", &cmd);

		switch (cmd)
		{
		case 1:
			copyfile();
			break;

		case 2:
			system("cls");
			break;

		case 3:
			exit(0);
			break;

		default:
			break;
		}

	}

	return 0;
}

 

你可能感兴趣的:(2019年,C和C++)