web-dev-qa-db-ja.com

\ nと\ r \ nの違いは何ですか?

どちらも「改行」を意味しますが、どちらが使用されるのはいつですか。

21
Emanuil Rusev

\r\nWindowsスタイル

\n[〜#〜] posix [〜#〜]スタイル

\rは古いOS X以前のMacスタイル、現代のMac使用[〜#〜] posix [〜#〜]スタイル。


\rはキャリッジリターンで、\nは改行です。古いコンピューターでは、モニターがなく、プリンターしかありません。プログラムの結果をユーザーに出力するには、左から改行を見つめて印刷する場合は、Line Feed\nを取得する必要があります。 、および\r for getCarriage return、これはWindowsプラットフォーム。

32
Svisstack

\ nは改行を意味します。これは、カーソルが次の行に移動する必要があることを意味します。

\ rはキャリッジリターンを意味します。これは、カーソルが行の先頭に戻る必要があることを意味します。

UnixおよびUnixプログラムは通常、改行のみが必要です(\ n)。

通常、WindowsとWindowsプログラムには両方が必要です。

3

\ nは改行のみ、\ r\nは改行とキャリッジリターンです(つまり、カーソルを左に移動します)。

3
Jackson Pope

これは、オペレーティングシステムのWindows(\ r\n)およびLinux(\ n)で改行がどのように表されるかです。

Unixでは、\ rはキャリッジリターン(CR)と\ nラインフィード(LF)であり、これらが一緒になってWindowsの改行識別子になり、Unixの改行識別子に置き換えます。

Windowsでは、\ rもCRですが、\ nはCRとLFの組み合わせです。つまり、効果的にCR + CR + LFをCR + LFに置き換えようとしています。あまり意味がありませんね。

「perldocperlop」から:すべてのシステムは、仮想「「\ n」」を使用して、「改行」と呼ばれる行末記号を表します。不変の物理的な改行文字のようなものはありません。オペレーティングシステム、デバイスドライバー、Cライブラリ、およびPerlがすべて共謀して保存しているのは幻想にすぎません。すべてのシステムが ""\r ""をASCII CRとして読み取り、 ""\n ""をASCIILFとして読み取るわけではありません。たとえば、Macではこれらが逆になり、ラインターミネータのないシステムでは、「 "\ n"」を印刷しても実際のデータが出力されない場合があります。一般に、システムの「改行」を意味する場合は「 "\ n"」を使用しますが、正確な文字が必要な場合はリテラルASCIIを使用します。たとえば、ほとんどのネットワークプロトコルは、ラインターミネータにCR + LF( ""\015\012 ""または ""\cM\cJ "")を期待し、優先します。多くの場合、 ""\012 ""だけを受け入れますが、 ""\015 ""だけを容認することはめったにありません。ネットワークに ""\n ""を使用する習慣を身につけると、いつかやけどを負う可能性があります。

1
Andriy Sholokh

'\ n'はUnixのデフォルトであり、 '\ r\n'はWindowsのデフォルトです。

1
Thomas Mueller

異なるオペレーティングシステムは、異なる方法で改行を処理します。これが最も一般的なものの短いリストです:DOSとWindows

彼らは、改行が2つの文字の組み合わせ、つまり '\ r\n'(または13の後に10が続く)であることを期待しています。

Unix(したがってLinuxも)

Unixは、単一の「\ n」を使用して改行を示します。

マック

Macは単一の「\ r」を使用します。

そのため、フォルダパスなどを使用しているときに、アプリをWindowsからMacに移植すると、問題が発生します。

1
Emerion

違いはオペレーティングシステムによって異なります。Windowsでは改行文字は\r\nですが、Linuxでは\nです。MacOSXには\rしかありません。実際には設計者の問題です。 OSはそれを

0

C#では、Environment.NewLineを使用できます。

0
Rezler