C语言文件复制

//复制文件
//定义复制可能发生的现象

#define COPY_SUCCESS 0
#define COPY_ILLEGAL_ARGUMENTS  -1
#define COPY_SRC_OPEN_ERROR -2
#define COPY_SRC_READ_ERROR -3
#define COPY_DEST_OPEN_ERROR -4
#define COPY_DEST_WRITE_ERROR -5
#define COPY_UNKNOWN_ERROR -100

int CopyFile(char const *src, char const *dest) {
    if (!src || !dest) {
        // 参数至少有一个为 NULL
        return COPY_ILLEGAL_ARGUMENTS;
    }

    FILE *src_file = fopen(src, "rb");
    if (!src_file) {
        // src 打开失败
        return COPY_SRC_OPEN_ERROR;
    }

    FILE *dest_file = fopen(dest, "wb");
    if (!dest_file) {
        // dest 打开失败,记得关闭 src
        fclose(src_file);
        return COPY_DEST_OPEN_ERROR;
    }

    int result;
    while (1) {
        int next = fgetc(src_file);
        if (next == EOF) {
            if (ferror(src_file)) {
                result = COPY_SRC_READ_ERROR;
            } else if (feof(src_file)){
                result = COPY_SUCCESS;
            } else {
                result = COPY_UNKNOWN_ERROR;
            }
            break;
        }

        if (fputc(next, dest_file) == EOF) {
            // 目标文件写入失败
            result = COPY_DEST_WRITE_ERROR;
            break;
        }
    }
    fclose(src_file);
    fclose(dest_file);
    // 复制成功
    return result;
}
int main(){
    int result = CopyFile("E:\\student\\Alion\\0127.1\\cmake-build-debug\\build.ninja","E:\\student\\Alion\\0127.1\\data.copy");
}

1. fgetc( ) 函数按字符序列顺序读取

2.fputc( ) 函数依次输出到另一个打开的文件中,就可以实现文本文件的复制。

目标文件——拷贝文件(注意替换代码中的文件存储位置。)

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信仰青春

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值