C-复制文本文件-按照字符

#include <stdio.h>
#include <io_utils.h>
#include "errno.h"
#include <string.h>


#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) {
        return COPY_ILLEGAL_ARGUMENTS;
    }
    FILE *src_file = fopen(src, "r");
    if (!src_file) {
        return COPY_SRC_OPEN_ERROR;
    }
    FILE *dest_file = fopen(dest, "w");
    if (!dest_file) {
        fclose(src_file);
        return COPY_SRC_OPEN_ERROR;
    }

    int result;
    while (1) {
        int next = fgetc(src_file);
        if (next == EOF) {
            if (ferror(src_file)) {
                result = COPY_SRC_READ_ERROR;
            } 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 0;
}

int main() {
//    while (1){
//        int next_input = getchar();
//        if (next_input == EOF) {
//            break;
//        } else if (next_input == '\n'){
//            continue;
//        }
//        putc(next_input,stdout);
//    }

    int result1 = CopyFile("../data/io_utils.h", "../data_copy/io_utils.h");
    PRINT_INT(result1);
    int result2 = CopyFile("../data/c.bmp", "../data_copy/c.bmp");
    PRINT_INT(result2);

    return 0;
}