对一个二进制文件进行处理

现有一个二进制文件,需要对其进行处理。要求每2048字节增加64字节0xff数据,末尾不足2048字节的部分要求以0xff补齐到2048字节再作处理,请用C语言实现此功能,以传命令形式指定输入文件和输出文件。


//现有一个二进制文件,需要对其进行处理。
//要求每2048字节增加64字节0xff数据,末尾不足2048字节的部分要求以0xff补齐到2048字节再作处理,
//请用C语言实现此功能,以传命令形式指定输入文件和输出文件。
#pragma warning(disable:4996) //开头加这句或项目、属性、配置属性、C/C++、预处理器、预处理器定义中添加“_CRT_SECURE_NO_WARNINGS”
#include <stdio.h>
#include <string.h>
#include <conio.h>
FILE *fi,*fo;
long i;
int c,j;
int main(int argc,char **argv) {
    if (argc<3) {
        printf("Usage:%s src des\n",argv[0]);
        return 1;
    }
    if (0==stricmp(argv[1],argv[2])) {
        printf("Src and des is same!\n");
        return 2;
    }
    fo=fopen(argv[2],"wb");
    if (NULL==fo) {
        printf("Can not create file %s\n",argv[2]);
        return 3;
    }
    fi=fopen(argv[1],"rb");
    if (NULL==fi) {
        fclose(fo);
        printf("Can not find file %s\n",argv[1]);
        return 4;
    }
    i=0;
    while (1) {
        c=fgetc(fi);
        if (EOF==c) break;
        fputc(c,fo);
        i++;
        if (i>=2048) {//每2048字节
            for (j=0;j<64;j++) fputc(0xff,fo);//增加64字节0xff数据
            i=0;
        }
    }
    if (0<i) {//末尾不足2048字节
        for (j=0;j<2048-i;j++) fputc(0xff,fo);//以0xff补齐到2048字节
        for (j=0;j<64;j++) fputc(0xff,fo);//再作处理
    }
    fclose(fi);
    fclose(fo);
    return 0;
}