LoginSignup
0
1

More than 5 years have passed since last update.

バイナリファイルをCSV形式に変換する

Last updated at Posted at 2019-01-22

とっても荒削りの状態ですね。。。

入力ファイル名はコマンドラインから、出力は標準出力へ。

bin2csv.c
#include <stdio.h>
#include <stdint.h>

#define     FIELD_COUNT     (12)
#define     LINE_MAXIMUM    (1000000)

static void bin2csv32(FILE *fin, int max_field, int max_line)
{
    int line = 0;
    int i = max_field;
    for (;;) {
        uint32_t data;
        size_t len = fread(&data, 1, sizeof(data), fin);
        if (sizeof(data) == len) {
            fprintf(stdout, "%d", data);
            if (--i) {
                fprintf(stdout, ",");
            }
            else {
                i = max_field;
                fprintf(stdout, "\n");
                if (++line >= max_line) {
                    // LINE OVER
                    break;
                }
            }
        }
        else {
            // EOF
            break;
        }
    }
}

int main(int argc, char* argv[])
{
    FILE *fin;
    if (argc != 2) {
        fprintf(stderr, "Usage : %s inputFileName\n", argv[0]);
        return 255;
    }
    if (NULL != (fin = fopen((const char *)argv[1], "rb"))) {
        bin2csv32(fin, FIELD_COUNT, LINE_MAXIMUM);
        fclose(fin);
    }
    else {
        fprintf(stderr, "File not found. (%s)\n", argv[1]);
    }

    return 0;
}

0
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1