Unix には \n、Mac は \r でしたが、現在は \n、DOS/Win32 は \r\n です。C でテキスト ファイルを作成する場合、OS に適した行末文字が確実に使用されるようにするにはどうすればよいですか?
3 に答える
fprintf(your_file, "\n");
これは、ファイルをテキスト モードで開いた場合、オペレーティング システムの stdio ライブラリによって適切な EOL に変換されます。バイナリ モードでは、変換は行われません。
ウィキペディアから:
ファイルをテキスト モードで書き込む場合、'\n' は、システムが使用するネイティブの改行シーケンスに透過的に変換されます。これは 1 文字より長い場合があります。(C 実装では、改行文字をファイルに格納できないことに注意してください。たとえば、テキスト ファイルの行は、SQL テーブルの行または固定長レコードとして格納できます。) テキスト モードで読み取る場合、ネイティブ改行シーケンスは '\n' に変換されます。C ライブラリがサポートする 2 番目の I/O モードであるバイナリ モードでは、変換は実行されず、エスケープ シーケンスの内部表現が直接出力されます。
ファイルをテキスト モードで開くと ( fopen
"wb" の代わりに "w" を渡す)、ファイルに書き込まれた改行文字は、システムに適した改行シーケンスに自動的に変換されます。ファイルを読み取ると、改行シーケンスは改行文字に変換されます。
これが、テキスト モードとバイナリ モードを区別することが重要な理由です。バイナリ モードで記述している場合、C はファイルに書き込むバイトを改ざんしません。