苦し紛れの C の endian converter

某所で必要になったので作成。とりあえずメモ

void *inv_read_4_byte(FILE *fp)
{
void *out;
unsigned char p[4];
p[3]= (unsigned char) fgetc(fp);
p[2]= (unsigned char) fgetc(fp);
p[1]= (unsigned char) fgetc(fp);
p[0]= (unsigned char) fgetc(fp);
out= p;
return out;

}

これを例えば int 型の変数 p を用いて
  int p;
fp= fopen("fort.1","rb");
p= *( (int*) inv_read_4_byte(fp) ); // fortranの1行目のデータサイズの取得
fseek(fp,(long)(p+4),SEEK_CUR); // fortranの1行目の行末への移動
p= *( (int*) inv_read_4_byte(fp) ); // fortranの2行目のデータサイズの取得
という風に受けて、fortran の unformatted 形式のファイルのデータを C で読出す

fseek SEEK_CUR - Google 検索