バイナリモードとテキストモードで書かれたファイルの違い

ストリームを扱うとき、ほとんどのプラットフォームは「t」オプションまたは「text-mode」オプションを無視すると思います。ただし、Windows では、これは当てはまりません。 MSDN で fopen() 関数の説明を見ると、「t」オプションを指定すると次のような効果があることがわかります:

  • ライン フィード ('\n') は、出力時に '\r\n" シーケンスに変換されます
  • キャリッジ リターン/ライン フィード シーケンスは、入力時にライン フィードに変換されます。
  • ファイルが追加モードで開かれている場合、ファイルの末尾で ctrl-z 文字 (文字 26) が調べられ、可能であればその文字が削除されます。また、その文字の存在をファイルの終わりとして解釈します。これは、CPM (第 3 世代または第 4 世代までの子供に親の罪が訪れたことについての何か) の時代からの残念な遺物です。以前に述べた意見に反して、ctrl-z 文字は追加されません。

テキストモードでは、改行 "\n" は改行 + 改行 "\r\n" に変換される場合があります

通常、バイナリ モードで開きます。テキスト モードでバイナリ データを読み込もうとしてもうまくいかず、破損します。ただし、バイナリ モードではテキストを問題なく読み取ることができます。"\n" から "\r\n" への自動変換は行われません。

fopenを参照してください


さらに、「rt」でファイルを開くと、入力は Crtl-Z 文字で終了します。