Windowsのキャリッジリターンは\r\n
\n
Unixでは、\r\n
は2文字として扱われますか?
これらは2つの文字です。
\r
は復帰です。\n
は改行です。2つの文字を組み合わせて、Windowsの新しい行を表します。 Linuxでは、\n
は改行を表します。 Linuxではカーソルを新しい行の先頭に移動します。 Windowsでは、カーソルはコンソールの同じ列にありますが、次の行にあります。
Linux上の\r
には、Windowsと同じ効果があります。カーソルを行の先頭に移動します。 \r
の代わりに\n
が使用されている同じ行に異なる情報を印刷することができます。
実際には\r is 0x0D (^M) and \n is 0x0A (^J)
ですが、Windowsの場合:
\n will write 0x0D 0x0A
uNIXの場合:
\r will write 0x0D
\n will write 0x0A
設定に依存します。 _\r\n
_は2バイト幅(ASCII、UTF-8など)ですが、Cのstdio
ライブラリなどのI/Oライブラリは、テキストモードで操作する場合、_\n
_および_\r\n
_準透過的。
つまり、Windowsプラットフォームでは、テキストモードストリーム_txt_in
_を読み込むCプログラム
_while ((c = getc(txt_in)) != EOF)
printf("%02x\n", c);
_
_\r
_のASCIIコードを報告しません。逆に、putc('\n', txt_out)
は実際にテキストモードストリーム_\r\n
_に_txt_out
_を書き込みます。 。
Windowsは\r\n
と他の2文字を区別しません。ただし、1つの文字として扱われる状況が1つあります。Cランタイムを使用してファイルをテキストとして開くと、ファイル内の\r\n
が\n
として読み取られ、\n
が\r\n
としてファイルに書き込まれます。
はい、2文字です。キャリッジリターン '\ r'の後に改行 '\ n'が続きます。
WindowsでNotepad ++とSublime Text 2を使用していくつかのテスト(空想なし)を実行しましたが、\r
と\n
は実際には2つの異なる文字であることがわかりましたが、...
Returnキーが押されたときに、異なるテキストエディタが\r
を挿入する場合と挿入しない場合があります。
テキストエディタで次のことを試してください。
1
2
3
4
5
次に、Ctrl + Fを押して、正規表現を有効にし、\r
を検索します。テキストエディタとその設定に応じて、各行の末尾の文字を「ヒット」または「ヒットしない」場合があります。上記のテキストが別のエディターからコピーアンドペーストされる場合、動作も異なる場合があります...
一部のテキストエディタでは、設定をカスタマイズできます。この場合、Returnを押したときに、\r\n
またはUNIXスタイル\n
のどちらを挿入するかを指定できます。それに加えて、ファイルを保存する前に\r
文字を削除または挿入することで、一貫したスタイルenforceを選択できる場合があります。