私はCを初めて使用し、次のコードを使用しています。
f = fopen( argv[1], "rb" );
fseek( f, 64, SEEK_SET );
fpos_t pos;
fgetpos (f, &pos);
printf("%x", pos);
ただし、64を返すことになっているにもかかわらず、これは40を返します。何が間違っているのでしょうか。
64を16進形式で出力しています"%x"
。64 = 0x40なので、謎が解けます!
%xを使用しているためです。16進数の0x40のように40と言っています。10進数を取得するには、%iまたは%dが必要です。
4*16は64です
印刷するものはすべて16進形式です。10進数の40は64です。Do you mean the file size is 0x64 or 0x40
fpos_t
(必然的に)算術型ではなく、。と一緒に使用することはできませんprintf
。実装では、必要に応じて、暗号化された位置を含む構造として保存することもできます。意味のある数値形式でファイルオフセットを取得するには、ftell
(または使用可能な場合は)を使用します。主に役に立たない。ftello
fgetpos