\n
(改行) と\r
(復帰)の違いは何ですか?
特に、との間には実際的な違いはありますか? どちらか一方ではなく、もう一方を使用すべき場所はありますか?\n
\r
ベストアンサー1
ASCII コードでは、それぞれ 10 と 13 なので 3 です。
しかし、真剣に言えば、たくさんあります:
- UnixおよびすべてのUnix系システムでは、
\n
行末のコードであり、\r
特別な意味はありません。 - その結果、C言語や、それを何らかの形で(たとえリモートであっても)コピーしたほとんどの言語では、
\n
行末の標準的なエスケープシーケンスになっています(必要に応じてOS固有のシーケンスに変換されます)。 - 古いMacシステム(OS X以前)では、
\r
行末のコードは - Windows(および多くの古いOS)では、行末のコードは2文字で、
\r\n
この順序で - (驚くべきことに)結果として(Windowsよりずっと古いOSを思い起こさせる)、
\r\n
インターネット上のテキスト形式の標準的な改行コードが - 電気機械式テレタイプのような「端末」の場合、
\r
キャリッジを左方向へ移動させて一番左のストップに当たるまで戻すよう命令し(遅い動作)、ローラーを1行巻き上げるよう命令します(はるかに速い動作)。これが、常にbefore\n
がある理由です。こうすることで、キャリッジがまだ左方向に動いている間にローラーを移動させることができます!-) Wikipedia には、\r
\n
より詳しい説明。 - 文字モード端末(通常は上記のようにさらに古い印刷端末をエミュレートします)の場合、raw モードで同様に動作し
\r
ます\n
(ただし、どちらもカーソルに関してはキャリッジやローラーがないため;-)
実際には、テキスト ファイルに書き込むという現代の状況では、常に を使用する必要があります\n
(Windows などの奇妙な OS を使用している場合は、基盤となるランタイムがそれを変換します;-)。 を使用する唯一の理由\r
は、文字端末 (または、それをエミュレートする「コンソール ウィンドウ」) に書き込んでいて、次に書き込む行で最後に書き込んだ行を上書きしたい場合です (プログレス バーなどの間抜けな「ASCII アニメーション」効果に使用されることがあります)。ただし、これは GUI の世界ではかなり時代遅れになっています;-)。