fread/fwrite に使用するパラメータ size と count の順序について疑問があります。ファイル fp から 8kb のデータを読み取りたい場合、次のうちどれがより効率的ですか?
fread(data,1,8192,fp)
fread(data,8192,1,fp)
また、心配する必要があるエンディアンの問題はありますか?
fread/fwrite に使用するパラメータ size と count の順序について疑問があります。ファイル fp から 8kb のデータを読み取りたい場合、次のうちどれがより効率的ですか?
fread(data,1,8192,fp)
fread(data,8192,1,fp)
また、心配する必要があるエンディアンの問題はありますか?
それらはまったく同等です。エンディアンについては、読んでいる内容によって異なります。通常、これはバイトのバッファであり、書き込まれた形式に従って「フォーマット解除」する必要があります。また、バイトであるため、エンディアンは何の役割も果たしません。
編集:
simonc が指摘したように (そして、彼は 100% 正しく理解できなかったので削除しましたが、彼の指摘は有効でした): 戻り値に関して違いがあります (これは、関数が機能したかどうか)。 fread( buffer, 8192, 1, fp )
0 または 1 を返し、8192 バイトすべてが読み取られた場合にのみ 1 を返します。さらに、Posix は、部分的に読み取られたオブジェクトの場合、バッファーの内容は指定されていないと述べています。実際には、バッファは読み取れるだけのバイト数で満たされますが、それが何バイトか分からないため、あまり役に立ちません。つまり、常に使用する必要がありますfread( buffer, 1, 8192, fp );
(この関数をバイトのバッファー以外に使用しても意味がないため)。