C语言实现文件复制功能

/*
 * 文件名:fileCopy
 * 功能描述:实现文件的复制功能-linux平台下
 * 编写人:王廷云
 * 编写日期:2018-1-12
*/
#include 
#include 

#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语言)