/*
* 文件名:fileCopy
* 功能描述:实现文件的复制功能-linux平台下
* 编写人:王廷云
*/
#include <stdio.h>
#include <stdlib.h>
#define BUFFSIZE 1024 // 缓冲区大小
/* 程序从主函数开始
* 思路:
* -> 以读的方式打开源文件
* -> 以写的方式打开目标文件,如果目标文件不存在则创建
* -> 读取源文件内容,写入到目标文件上
* -> 重复循环直到文件读写完成
*/
int main(int arc, char *argv[])
{
FILE *fin; // 源文件
FILE *fout; // 目标文件
char *buff; // 缓冲区指针
int ret; // 用于检查函数是否操作成功
/* 检查参数 */
if (arc != 3)
{
printf("Usage: %s src_file dest_file\n", argv[0]);
return -1;
}
/* 以读的方式打开源文件 */
fin = fopen(argv[1], "r");
if (NULL == fin) // 检查打开情况
{
perror(argv[1]);
return -2;
}
/* 以写的方式打开目标文件 */
fout = fopen(argv[2],"w");
if (NULL == fout) // 检查打开情况
{
perror(argv[1]);
goto err0;
}
/* 分配缓冲区内存空间 */
buff = malloc(BUFFSIZE);
if (NULL == buff) // 检查分配空间是否成功
{
fprintf(stderr, "molloc failed\n");
goto err1;
}
/* 循环读写文件 */
while (1)
{
/* 从源文件中读取内容 */
ret = fread(buff, 1, BUFFSIZE, fin);
/* 把从源文件读取到的容写入到目标文件中 */
if (ret != BUFFSIZE)
{
fwrite(buff, ret, 1, fout);
}
else
{
fwrite(buff, BUFFSIZE, 1, fout);
}
if (feof(fin))
break;
}
/* 关闭打开的文件 */
fclose(fin);
fclose(fout);
/* 释放动态分配的内存空间 */
free(buff);
return 0;
/* 出错时的层次退出 */
err2:
free(buff);
err1:
fclose(fout);
err0:
fclose(fin);
return -3;
}
【C语言】之实现文件复制功能
最新推荐文章于 2024-07-09 11:31:22 发布