0

私はCを初めて使用し、次のコードを使用しています。

f = fopen( argv[1], "rb" );
fseek( f, 64, SEEK_SET );
fpos_t pos;
fgetpos (f, &pos);
printf("%x", pos);

ただし、64を返すことになっているにもかかわらず、これは40を返します。何が間違っているのでしょうか。

4

5 に答える 5

4

64を16進形式で出力しています"%x"。64 = 0x40なので、謎が解けます!

于 2011-05-05T12:17:04.590 に答える
2

%xを使用しているためです。16進数の0x40のように40と言っています。10進数を取得するには、%iまたは%dが必要です。

于 2011-05-05T12:17:19.707 に答える
1

4*16は64です

于 2011-05-05T12:16:53.233 に答える
1

印刷するものはすべて16進形式です。10進数の40は64です。Do you mean the file size is 0x64 or 0x40

于 2011-05-05T12:18:02.623 に答える
1

fpos_t(必然的に)算術型ではなく、。と一緒に使用することはできませんprintf実装では、必要に応じて、暗号化された位置を含む構造として保存することもできます。意味のある数値形式でファイルオフセットを取得するには、ftell(または使用可能な場合は)を使用します。主に役に立たない。ftellofgetpos

于 2011-05-05T12:34:22.373 に答える