Last Update: Dec.18,2002

C Source Library

「LSI C-86 Ver.3.30c 試食版」、「Borland C++ 5.5」でコンパイル出来ます。

■ ファイルをバイト配列で表示

/*
 *  f2ba.c : ファイルをバイト配列で表示
 *
 *      Copyright (c) 2002 AOK. 
 *
 *      2002.02.27 - 初版
 *      2002.08.05 - 2版 
 *
 *  【使い方】f2ba [入力ファイル名]
 *
 *  プログラマくらいにしか使い道ないよね。
 *
 */

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

#define COLNUM  8

void getfname(char *s)
{
    int i;
    if (fgets(s, FILENAME_MAX+1, stdin) != NULL) {
        for (i = 0; s[i] != '\0'; i++) {
            if (s[i] == '\n') {
                s[i] = '\0';
                break;
            }
        }
    }
}

int main(int argc, char *argv[])
{
    FILE *fp;
    int c, n = 0;
    char s[FILENAME_MAX+1];
    if (argc < 2) {
        printf("filename ? : ");
        getfname(s);
    } else {
        strncpy(s, argv[1], FILENAME_MAX+1);
        s[FILENAME_MAX] = '\0';
    }
    fp = fopen(s, "rb");
    if (fp == NULL) {
        printf("%s", strerror(errno));
        return 1;
    }
    while ((c = getc(fp)) != EOF) {
        if (n != 0) {
            putchar(',');
            if (n % COLNUM == 0) printf("\n\t");
            else putchar(0x20);
        } else putchar('\t');
        printf("0x%02x", c);
        n++;
    }
    fclose(fp);
    return 0;
}