【C】ファイルがバイナリかどうかの判断

ファイルがバイナリかテキストか自動で判断する簡易的な方法。

ファイルの最初の1000文字くらいを調べ、ASCIIコード 00H ~08H があればバイナリーとみなす。

int isBinaryFile(char *fname)
{
  FILE *fp;
  int c;
  int i;

  fp = fopen(fname, "rb");
  if(fp == NULL) {
    printf("ERROR: %s cannot open \n", fname);
    return -1;
  }

  i=0;
  while((feof(fp)==0) && (i<1000))
  {
    c = fgetc(fp);
    if(c == EOF) {
      break;
    }
    else if(c <= 8) {
      //binary
      fclose(fp);
      printf("%s is Binary. \n", fname);
      return 1;
    }

    i++;
  }

  fclose(fp);
  printf("%s is ASCII. \n", fname);
  return 0;
}