Binary File の修正

binary 形式のファイルをプログラムで修正します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. TEXT 形式のファイルは Text Editor などで簡単に修正できますが、binary 形式のファイルはそうはいきません。
    そこで今回は レコードの入出力 で作成した成績データの100点を99点に修正してみましょう。
  2. ソースプログラムです。
    /*★ Binary File Update    前田 稔 ★*/
    #include    <stdio.h>
    #include    <conio.h>
    
    char    in_file[24] = "w.bin";
    char    out_file[24] = "wk.bin";
    int     buf[1000000];   //Max 4*1,000,000= 4MB
    int     cnt;
    int     sou = 100       //0X00000064;
    int     des = 99        //0X00000063;
    
    FILE    *FD;            //FILE の定義
    
    //Main Program
    void  main()
    {
        // input file
        if (fopen_s(&FD,in_file,"rb")!=0)
        {   printf("input file open error\n");
            return;
        }
        cnt= fread(buf,4,1000000,FD);
        fclose(FD);
        printf("input count= %d\n", cnt);
    
        // sou ⇒ des
        for(int i=0; i<cnt; i++)
            if (buf[i]==sou)    buf[i]= des;
    
        // output file
        if (fopen_s(&FD,out_file,"wb")!=0)
        {   printf("output file open error\n");
            return;
        }
        fwrite(buf,4,cnt,FD);
        fclose(FD);
    }
    
  3. in_file[24] = "w.bin"; が入力ファイルで、out_file[24] = "wk.bin"; が修正したファイルです。
    sou = 100; で修正をしたい値を、des = 99; で修正値を指定します。
    int buf[1000000]; が入出力バッファで、最大 4,000KB のファイルまで処理出来ます。
    修正データは int ごとに判定するので、int の境界に合っていなければなりません。
    また成績データ以外に 0X00000064 の値を取るデータがあると、それも 0X00000063 に修正されるので要注意です。
  4. ファイルの入出力の説明は「レコードの入出力」を参照して下さい。
    Binary Editor を Game Program & Tool のダウンロード から提供しています。

超初心者のプログラム入門(C/C++)