web-dev-qa-db-ja.com

キャリッジリターン、ラインフィード、フォームフィードとは何ですか?

以下の制御文字の意味は何ですか?

  1. キャリッジリターン

  2. 改行

  3. フォームフィード

436
ashna

キャリッジリターンとは、下に進まずに現在の行の先頭に戻ることを意味します。名前は造られたときモニターがまれだったので名前はプリンターのキャリッジから来る。これは一般に "\ r"(CRと省略)としてエスケープされ、ASCII値13または0x0Dを持ちます。

改行とは、次の行に進むことを意味します。しかし、その目的は変更され、名前が変更されました。 "改行"として使用され、 で終了します lines(一般に 区切り linesと混同されます)。これは一般に "\ n"としてエスケープされ、LFまたはNLと省略され、ASCIIの値は10または0x0Aです。 CRLF(CRNLではなく)がペア "\ r\n"に使用されます。

用紙送りとは、次の「ページ」に進むことを意味します。これはページ区切り文字として一般的に使用されていましたが、現在はセクション区切り文字としても使用されています。 (改ページを挿入する)とき、テキストエディタはこの文字を使用することができます。これは一般に "\ f"(FFと省略)としてエスケープされ、ASCII値12または0x0Cを持ちます。

制御文字として、それらはさまざまな方法で解釈される可能性があります。

最も一般的な違い(そしておそらく気にする価値があるのはおそらく唯一の違い)は、WindowsではCRLF、Unix系ではNL、そして古いMacではCRで終わることです(OS Xでは状況はUnixのように変わりました)。まったく同じ文字に対して、LFからNLへの意味のシフトは、WindowsとUnixの違いを示しています。 (WindowsはもちろんUNIXよりも新しいので、この意味的な変化は採用されませんでした。CRを使用しているMacの歴史はわかりません。)多くのテキストエディタはこれら3つのフォーマットのいずれかでファイルを読んで変換できます。しかし、すべてのユーティリティができるわけではありません。

改ページはもう少しおもしろいです(あまり一般的ではありませんが)、通常のページ区切りの定義では、改行の間(NL、CRLF、CRなどの改行シーケンスの後)、または開始時にのみ使用できます。ファイルの終わり.

563
Roger Pate

\rはキャリッジリターンで、カーソルを後ろに移動します。

printf("stackoverflow\rnine")
ninekoverflow

「nine」は4文字なので、カーソルを「stackoverflow」の先頭に移動し、先頭の4文字を上書きします。

\nは、行を変更してカーソルを新しい行の先頭に移動する改行文字です。

printf("stackoverflow\nnine")
stackoverflow
nine

\fはフォームフィードです、その使用は時代遅れになっていますが、それはのようなインデントを与えるために使用されます

printf("stackoverflow\fnine")
stackoverflow
             nine

私は書きます -

printf("stackoverflow\fnine\fgreat")
stackoverflow
             nine
                 great
99
user3346547

\fは改ページに使用されます。コンソールには効果がありません。しかし、ファイルでこの文字定数を使用すると、違いがわかります。

他の例としては、出力をファイルにリダイレクトできれば、ファイルを書いたりファイル処理を使用したりする必要はありません。

例:

このコードをc ++で書く

void main()    
{
    clrscr();
    cout<<"helloooooo" ;

    cout<<"\f";
    cout<<"hiiiii" ;

}

これをコンパイルすると、exeを生成します(例:abc.exe)。

それからこれを使ってあなたの出力をファイルにリダイレクトすることができます:

abc > xyz.doc

それからファイルxyz.docを開くと、実際の改ページが表示されます。 こんにちは。

25
Balram Dixit

Wikipedia :を見てください。

ASCIIまたは互換性のある文字セットに基づくシステムはLF(改行、 '\ n'、0x0A、10進数で10)またはCR(キャリッジリターン、 '\ r'、 0x0D、10進数で13)、またはCRの後にLF(CR + LF、0x0D 0x0A)。これらの文字は、プリンタコマンドに基づいています。ラインフィードは、1行の用紙がプリンタから送り出されることを示し、キャリッジリターンは、プリンタキャリッジが現在の行の先頭に戻ることを示します。

24
tanascius

上記の情報とは別に、LF(\ n)とCR(\ r)の興味深い歴史がまだあります。 [原著者:阮一峰出典: http://www.ruanyifeng.com/blog/2006/04/post_213.html] コンピュータが出る前に、テレタイプモデル33と呼ばれるタイプのテレプリンタがありました。毎秒10文字を印刷します。しかし、これには1つの問題があります、各行を印刷し終わった後、それは2文字を印刷する時間である次の行に移動するのに0.2秒かかります。この0.2秒間に新しい文字が転送されると、この新しい文字は失われます。

そこで、科学者たちはこの問題を解決する方法を見つけました。各行の後に2つの終了文字を追加します。1つは「キャリッジリターン」です。これは、プリンタに印刷ヘッドを左に移動するように伝えます。もう1つは「ラインフィード」で、用紙を1行上に移動するようにプリンタに指示します。

後になって、コンピュータが普及するようになり、これら二つの概念がコンピュータで使われています。当時は記憶装置が非常に高価だったので、各行の終わりに2文字を追加するのは高価だと言う科学者たちもいました。1つで十分なので、どちらを使用するかについては議論があります。

UNIX/MacおよびLinuxでは、 '\ n'が各行の末尾に配置され、Windowsでは、 '\ r\n'が各行の末尾に配置されます。この使用の結果、UNIX/Macのファイルは、Windowsで開いた場合に1行に表示されます。 UNIXまたはMacで開いた場合、Windowsのファイルは各行の終わりに1つの^ Mを持ちます。

21
wxie

古いペーパープリンタ端末では、次の行に進むには2つのアクションが必要でした。すなわち、プリントヘッドを水平走査範囲の先頭に戻す(キャリッジリターン)ことと、印刷中のロール紙を進めること(ラインフィード)です。

私たちはもはや紙プリンタ端末を使用していないので、これらの行動はもはや実際には関係ありませんが、それらを知らせるために使用される文字は様々な形で行き詰まっています。

18
Amber

IBM 1403インパクトプリンターを考えてみましょう。 CRはプリントヘッドを行の先頭に移動しましたが、用紙を進めませんでした。これにより「オーバープリント」が可能になり、1行に複数行の出力が配置されます。下線を引くようなものは、BOLDプリントのように、このようにして達成されました。 LF用紙を1行進めました。 CRがなかった場合、LFは印刷ヘッドを移動させなかったので、次の行は千鳥ステップとして印刷されます。 FFは論文を次のページに進めました。また、通常は新しいページの先頭行の先頭にプリントヘッドを移動しましたが、そのためにはCRが必要な場合があります。確かに、FFによって作成された余分なCRは問題にならないので、ほとんどのプログラマーはページの最後の行の終わりにCRLFの代わりにCRFFをコーディングしました。

10
Dick Guertin

補足として、

1、 キャリッジリターン :印刷位置を current 行の先頭に変更することを意味するプリンタ用語です。コンピュータの世界では、ほとんどの場合、現在の行の先頭に戻ることを意味しますが、めったに新しい行を表すことはありません。

2、 改行 :用紙を1行進めるという意味のプリンター用語です。そのため、復帰改行と改行が一緒に使用されて、新しい行の先頭から印刷が開始されます。コンピュータの世界では、それは一般に改行と同じ意味を持ちます。

3、 用紙送り :これはプリンターの用語です、 このスレッドの説明は好きです

あなたが1980年代スタイルのプリンタ用にプログラミングしていたならば、それは紙を排出して新しいページを始めるでしょう。あなたはそれを必要としないことはほぼ確実です。

http://en.wikipedia.org/wiki/Form_feed

それはほとんど時代遅れで、あなたは エスケープシーケンス\ f - フォームフィードを参照することができます - それは正確には何ですか? 詳細な説明.

注意してほしいのは、CRやLFやCRLFを使って、いくつかのプラットフォームでは改行を表すことができますが、他のプラットフォームでは改行を理解できないためです。詳細は wiki改行 を参照してください。

LF:Multics、UnixおよびUnix風システム(Linux、OS X、FreeBSD、AIX、Xenixなど)、BeOS、Amiga、RISC OSなど

CR:Commodore 8ビットマシン、Acorn BBC、ZX Spectrum、TRS-80、Apple IIファミリー、Oberon、バージョン9までの古典的なMac OS、MIT LISP Machine、およびOS-9

RS:QNX以前のPOSIX実装

0x9B:ASCIIのATASCIIバリアントを使用するAtari 8ビットマシン(10進数で155)

CR + LF:Microsoft Windows、DOS(MS-DOS、PC DOSなど)、DEC TOPS-10、RT-11、CP/M、MP/M、Atari TOS、OS/2、Symbian OS、Palm OS、 Amstrad CPC、および他のほとんどの初期の非UnixおよびIBM以外のOS

LF + CR:Acorn BBCおよびRISC OSスプールテキスト出力。

8
Gearon

キャリッジリターンとラインフィードもタイプライターへの言及です、ということでキャリッジの左側(紙が行くところ)のハンドルを少し押すと、紙はシリンダーのまわりに少し回転して、 1行を文書化します。 1行の入力を終えて次の行に進みたい場合は、行を進めながらキャリッジを右いっぱいにスライドさせながら、各キーストロークでキャリッジが移動したときに再び左から右に入力を再開します。言うまでもなく、ワードラップはその時代のすべてのワードプロセッシングのデフォルト設定でした。 P:D

3

"\ n"は改行文字です。それは現在の行を終了し、それを読んでいる人のために新しい行に行くことを意味します。

3
vpit3833

それらは「改行」の概念に関連する非印刷文字です。\n改行します。\rはキャリッジリターンです。異なるプラットフォームでは、有効な改行とは異なる意味を持ちます。 Windowsでは、新しい行は\ r\nです。 Linuxでは、\ n。 Macでは、\ r。

実際には、それらを任意の文字列に入れると、文字列のプリントアウトに影響があります。

2
Palantir