从源文件中读入2048个字节到目标文件

时间:2021-09-21 09:58:58

该程序演示了fopen,fread,fwrite的基础用法。

/*
功能说明:
    从源文件中读入2048个字节到目标文件
代码说明:

实现方式:
    该程序演示了fopen,fread,fwrite的基础用法。
限制条件或者存在的问题:
    无
*/

#include <stdio.h>
#include <stdlib.h>

#define BUFFER_SIZE 2048

int main(int argc, char ** argv)
{
    if (argc != 2)
    {
        printf("parameter error! usage:\n\t[%s file_path_name]\n", argv[0]);

        return -1;
    }

    FILE *fp_read = fopen(argv[1], "rb");
    if (!fp_read)
    {
        printf("open read file [%s] error!\n", argv[1]);

        return -2;
    }

    FILE *fp_write = fopen("file_name.dat", "wb");
    if (!fp_write)
    {
        printf("open write file [file_name.dat] error!\n");

        fclose(fp_read);

        return -3;
    }

    char buffer[BUFFER_SIZE + 1] = { 0 };
    if (fread(buffer, BUFFER_SIZE, 1, fp_read) != 1) // fread就是从文件指示符中读取指定大小的内容到内存中。它与fgets是不一样的。
    {
        printf("read file [%s] error!\n", argv[1]);

        fclose(fp_read);
        fclose(fp_write);

        return -4;
    }

    if (fwrite(buffer, BUFFER_SIZE, 1, fp_write) != 1)
    {
        printf("write file [file_name.dat] error!\n");

        fclose(fp_read);
        fclose(fp_write);

        return -5;
    }

    fclose(fp_read);
    fclose(fp_write);

    return 0;
}

这个代码可以复用到我现在的工作中。