fread(buf, 1000, 1, stream)
の違い と fread(buf, 1, 1000, stream)
つまり、最初のケースでは 1000 バイトのチャンクを 1 つしか取得しないか、ファイルが小さい場合は何も取得せず、2 番目のケースではファイル内のすべてを 1000 バイト未満および最大で取得します。
fread の実装方法に基づいています。
単一 UNIX 仕様は
fgetc には次のメモもあります:
もちろん、これは UTF-8 のような手の込んだ可変バイト文字エンコーディングよりも前のことです。
SUS は、これが実際には ISO C 文書から取られていることを指摘しています。
これは純粋な憶測ですが、当時 (いくつかはまだ存在しています)、多くのファイルシステムはハード ドライブ上の単純なバイト ストリームではありませんでした。
多くのファイル システムはレコード ベースであったため、効率的な方法でそのようなファイル システムを満たすには、アイテム (「レコード」) の数を指定する必要があります。これにより、fwrite/fread が単なるバイト ストリームではなくレコードとしてストレージを操作できるようになります。