C言語 バイナリファイル読込み fread
音声ファイルのwavファイルを用意して、それを読み込んで、16進数で表示させてみる。wavファイルは波形編集ソフトのAudacityで作成した。実験なので5サンプルしかない短いもの。 これをStirlingというバイナリエディタで表示させると以下のようになる。ほとんどはヘッダ情報で、ファイルの各種情報が収められている。音の情報は20行の0Cから。16bitモノラルwavなので、ひとつの音は2バイトで構成されている。扱いはリトルエンディアン。 Cのプログラムで同じように表示させてみる。下の例では「wav_sample.wav」という名前のファイルをプログラムと同じ階層に置いている。 wavファイル読込プログラム #include <stdio.h> #include <stdlib.h> int main(void){ FILE *fp; int i; unsigned char buf[1000]; /* 符号なしchar宣言 */ int size; fp = fopen("wav_sample.wav", "rb"); /* rb バイナリ読込み */ if (fp == NULL) { /* ファイルがない場合のエラー処理 */ printf("error"); exit(EXIT_FAILURE); }else{ /* 読込み及びデータ数の取得 */ size = fread(buf, sizeof(unsigned char), 1000, fp); for(i=0; i<size; i++){ /* 表示 */ if(i % 16 == 0) printf("\n"); /* 改行 */ printf("%02x ", buf[i]); /* 16進数で表示 */ } } fclose(fp); /* ファイルを閉じる */ return 0; } fread()でバイナリ