サイズとカウントを引数として取る fread/fwrite の根拠は何ですか?

fread(buf, 1000, 1, stream) の違い と fread(buf, 1, 1000, stream) つまり、最初のケースでは 1000 バイトのチャンクを 1 つしか取得しないか、ファイルが小さい場合は何も取得せず、2 番目のケースではファイル内のすべてを 1000 バイト未満および最大で取得します。


fread の実装方法に基づいています。

単一 UNIX 仕様は

fgetc には次のメモもあります:

もちろん、これは UTF-8 のような手の込んだ可変バイト文字エンコーディングよりも前のことです。

SUS は、これが実際には ISO C 文書から取られていることを指摘しています。


これは純粋な憶測ですが、当時 (いくつかはまだ存在しています)、多くのファイルシステムはハード ドライブ上の単純なバイト ストリームではありませんでした。

多くのファイル システムはレコード ベースであったため、効率的な方法でそのようなファイル システムを満たすには、アイテム (「レコード」) の数を指定する必要があります。これにより、fwrite/fread が単なるバイト ストリームではなくレコードとしてストレージを操作できるようになります。