#includevoid 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;
}