トリッキーコードネット トップへ戻る   C/C++, Java, Perl, PHP, JavaScript, アルゴリズム, ショートコーディング, IOCCCコードの解説, 等々

サイト情報

トリッキーなコード

7行プログラミング

物凄いコード集

アルゴリズム

データ構造

C/C++な話題

コードサンプル

ツール/環境構築

開発ノウハウ 等

ネタ/ジョーク集

おススメ書籍/サイト

サイトTOP >> コードサンプル >> バイナリエディタサンプルコード

バイナリエディタプログラミング (C言語)

ここで紹介したIOCCC作品を元にした、バイナリエディタのサンプルソースコードです。

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

int checkAscii(int c);

int main(int argc, char *argv[])
{
    FILE       *fp;
    unsigned    io = 0;
    int         i, j[16];
    char       *psz = "%2x ";
    const char *szErrMsgs[] = {
        "バイナリ表示をするファイルを指定して下さい。"
      , "%sのファイルの読み込みに失敗しました。"
    };

    if (argc != 2) {
        printf(szErrMsgs[0]);
        exit(1);
    }

    if (! (fp = fopen(argv[1], "r"))) {
        printf(szErrMsgs[1], argv[1]);
        exit(1);
    }

    while (! feof(fp)) {

        for(i = 0; i < 16; j[i++] = fgetc(fp));

        if (j[0] == -1)
            break;

        printf("%4x: ",io);

        if (argc == 2) {
            for (i = 0; i < 16; i++)
                printf( (j[i] != -1) ? psz : "   ", j[i]);

            printf("   ");
        }

        for (i = 0; i < 16; i++) {
            (j[i] != -1) ? ((checkAscii(j[i]) == 0 && (*(j + i) = '.')), putchar(j[i]))
                         : putchar(' ');
        }

        printf("\n");
        io += i;
    }

    return 0;
}

int checkAscii(int c)
{
    return c >= ' ' && c <= '\~';
}
実行結果) C言語バイナリエディタ パラメータとして、バイナリ表示したいファイルパスを渡します。 ソースコードの詳しい説明は、冒頭のリンク先を参照して下さい ^^;)
ひょっとしたら参考になるかもしれないページ : バイナリエディタ (C言語 - IOCCC)
         このエントリーをはてなブックマークに追加   


作業効率化・ライフハックのオススメ記事




コンピュータ・テクノロジーのオススメ記事





恋愛・人間関係のオススメ記事




※ 当サイトは、トップページからリンクで辿る事の出来るページに限り、リンクフリーです。
※ 当サイトの閲覧/利用によって生じた如何なる損害も、当サイト管理人は責任を負いません。
※ 当サイトの内容を転載される場合は、当サイトへのリンクをお願い致します。