#include <stdio.h>
#include <stdlib.h>
#define DATA_SIZE 16777216
#define RGB_MAX 255
long data[RGB_MAX][RGB_MAX][RGB_MAX];
struct RGB {
 unsigned char r;
 unsigned char g;
 unsigned char b;
 unsigned char alpha;
} rgb;
int main(void)
{
 FILE *fp;
 int i, r, g, b;
 if((fp=fopen("ファイル名", "rb")) == NULL) exit(1); /* ファイルが開けなかった */
 /* RGBのそれぞれの組み合わせをインクリメントしていく */
 for(n=0; n<DATA_SIZE; n++) {
  fread(&rgb, sizeof rgb, 1, fp);
  data[rgb.r-1][rgb.b-1][rgb.b-1]++;
 }
 fclose(fp); /* ここで一旦ファイルを閉じる */
 if((fp=fopen("textdata", "w")) == NULL) exit(1); /* ファイルが開けなかった */
 fprintf(fp, "r,g,b,頻度");
 for(r=0; r<RGB_MAX; r++)
  for(g=0; r<RGB_MAX; g++)
   for(b=0; r<RGB_MAX; b++)
    fprintf(fp, "%.3d,%.3d,%.3d,%d,\n", r, g, b, i[r][g][b];
 fclose(fp);
 return 0;
}