自分の構造の何が悪いのか理解できません。
ネストされたPNGヘッドのデータの非常に基本的な構造は次のとおりです。
typedef struct _chunk Chunk;
typedef struct _file_header file_header;
#pragma pack(push, 1)
struct _chunk
{
unsigned int size;
unsigned char type[4];
};
struct _file_header
{
unsigned char signature[8];
Chunk ihdr;
};
#pragma pack(pop)
これがメインプログラムのスニペットです:
int main ()
{
FILE* img;
file_header* h;
if ((img=fopen("flower.png", "rb")) == NULL) {
printf("file not found.\n");
exit(1);
}
h = (file_header*)malloc(sizeof(file_header));
fread(h, sizeof(char), sizeof(file_header), img);
// the ouput from the printf below should be "13"
// but what it shows is "218103808" !! (?)
printf("%i\n", h->ihdr.size);
free(h);
fclose(img);
return 0;
}
誰かが私にこの構造の何が悪いのか説明してもらえますか、あるいは何も問題がなければ、物事をうまく機能させるために何を変えるべきですか?