0

次のコードがあります。

// fp is a FILE opened in binary mode
unsigned char bit_depth;
unsigned char color_type;
unsigned char compression_method;
unsigned char filter_method;
unsigned char interlace_method;

fread(&bit_depth, 1, 1, fp);
fread(&color_type, 1, 1, fp);
fread(&compression_method, 1, 1, fp);
fread(&filter_method, 1, 1, fp);
fread(&interlace_method, 1, 1, fp);

freadsおそらく、フォーマット文字列に似たものを使用して、すべてを一度に行いたいと思います(ただしfscanf、テキストファイルのみですよね?)。

どんな助けでも大歓迎です、ありがとう!

4

4 に答える 4

4

構造体が欲しいだけのように聞こえます。

typedef struct info {
    unsigned char bit_depth;
    unsigned char color_type;
    unsigned char compression_method;
    unsigned char filter_method;
    unsigned char interlace_method;
} info_t;

info_t my_info;
fread(&my_info, sizeof(info_t), 1, fp);

ただし、構造パディングには注意してください。ファイルがわずか 5 バイトで書き込まれた場合は、デバッガーをチェックインして、ファイル ポインターが台無しにならないようにする必要があります。多くの場合、構造体は 8 バイト境界に整列されるため、sizeof(info_t) の評価結果を確認し、必要に応じて構造体の周りにプラグマを配置して、その整列に影響を与えます。

于 2013-06-10T14:43:59.550 に答える
-1

** * ** * 30 文字が必要です* ** * ** * http://www.cplusplus.com/reference/cstdio/fread
を参照して ください

于 2013-06-10T14:43:08.563 に答える