私はこれをどこかで見つけました。
ファイルが書き込まれているときに rewind(fileptr) が実行され、ファイルの先頭に書き込むべきものが書き込まれます。でも最初に書くと、ファイルの中身が上書きされてしまうのではないですか?お知らせ下さい。
はい、ファイルは上書きされますが、書き込みの長さだけです。ファイルがより長い場合、ほとんどの場合 (メインストリーム システムの通常のファイル)、残りのバイトは変更されません。
ただし、実際には、その時点でファイルが切り詰められるかどうか疑問に思うかもしれません: 通常は (同じケースで)いいえ. 技術的には、切り捨てはテキスト ファイルでは実装定義であり、バイナリ ファイルでは定義されません。
現代のシステムにテキストとバイナリの区別があったとしても驚かれるでしょう。確かに Unix、Linux、および BSD システムにはありません。また、実装で定義されたイタチの言葉が、廃止された化石に組み込まれたのではないかと思います。 . その場合、すべての重要なケースで、残りのバイトは変更されず、ファイルは切り捨てられません。
現在、ファイル API は、ファイルの抽象化の完全なリストを実装していない多くのものに使用されています。UDP ソケット、端末、テープ ドライブ、非ストレージ ハードウェア用のランダム コントローラーなどを考えてみてください。控えめに言っても、賢明ではありません。 、バッファ付きI/Oパッケージを使用してそのようなチャネルを書き込むことさえできますが、仕様のギャップの理由はおそらくそれらです。