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


500

次の制御文字の意味は何ですか。

  1. キャリッジリターン

  2. 改行

  3. フォームフィード


14
「復帰」とはどういう意味ですか?ラップトップに「キャリッジ」「リターン」が表示されません。:s
Jean Hominal 2010年

12
@JeanHominalキャリッジは基本的にカーソル(または古代のタイプライターのポインタ)を意味し、リターンはその行の先頭に戻ることを意味します。
SOFe

「ターミナル」「ウィンドウ」に終端されたワイヤ(またはその問題についてはガラス枠)が表示されません。また、/ dev / tty1に接続された「テレタイプ」もありません。それらはすべて隠喩になっています。
Piskvorが

回答:


621

キャリッジリターンとは、下に進まずに現在の行の先頭に戻ることを意味します。名前が造られたときにモニターが珍しかったので、名前はプリンターの馬車に由来します。これは通常\rCRと省略されてエスケープされ、ASCII値13or を持ちます0x0D

改行とは、次の行に下に進むことです。ただし、目的は変更され、名前が変更されました。「改行」として使用され、行を終了します(通常、行の区切りと混同されます)。これは通常\n、としてエスケープされ、LFまたはNLと省略され、ASCII値10またはを持ちます0x0A。ペアにはCRLF(CRNLではない)が使用され\r\nます。

フォームフィードとは、次の「ページ」に下に進むことを意味します。ページ区切りとして一般的に使用されていましたが、現在はセクション区切りとしても使用されています。(論理的に独立した関数または関数のグループを分割するためにソースコードで一般的に使用されることはありません。)テキストエディターは、「改ページを挿入する」ときにこの文字を使用できます。これは一般的にFF\f省略されてエスケープされ、ASCII値or を持ちます。120x0C


制御文字として、それらはさまざまな方法で解釈されます。

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

フォームフィードは少し面白く(直接使用されることはあまりありませんが)、ページ区切りの通常の定義では、行間(例:NL、CRLF、またはCRの改行シーケンスの後)または最初またはファイルの終わり。


10
私がいることを確認することができますOS Xが(OS XはのでちょうどUnixのように、ラインターミネータとしてNLを使用している UNIX)。CRはMac OS 9以下で使用されていました。
Rory O'Kane 2013

1
FF文字は( "CTRL-G"ベル文字と一緒に)今日は奇妙に見えるかもしれませんが、ビデオディスプレイがはるかに一般的でなく、ハードコピー端末がデータディスプレイとして使用されたときに、より関連性が高まりました。
Rick Sarvas、2013年

そのフィード制御ではない\x0cですか?
Tjorriemorrie、2015

2
「CRを使ったMacの歴史は知らない。」それは恐らくCRを使ったApple IIから来た。CRは、CommodoreやTandyなどの他の8ビットシステムでも一般的でした。ASCIIはこれらのシステムでは一般的ではありませんでした。Commodoreは、0x8d(!)にLFを持つPETSCIIを使用していました。AtariにはLF文字はまったくありませんでした。何らかの理由で、CR = 0x0dは多かれ少なかれ標準でした。
Ssswift 2017年

125

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

printf("stackoverflow\rnine")
ninekoverflow

「9」は4文字であるため、カーソルが「stackoverflow」の先頭に移動し、最初の4文字が上書きされます。

\n 改行文字であり、行を変更して、カーソルを次のように改行の先頭に移動します-

printf("stackoverflow\nnine")
stackoverflow
nine

\f フォームフィードです。その使用は廃止されましたが、次のようなインデントを付けるために使用されます

printf("stackoverflow\fnine")
stackoverflow
             nine

私が次のように書いたら

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

3
ただし、この例は高級言語では機能しません。
Sina Karvandi 2016年

@ᔕIᑎᗩKᗩᖇᐯᗩᑎᗪIあります。coreutilsのprintfユーティリティを使用して、少なくともLinuxシェルで同じことができます。または、echo -enどちらがbashビルトインであるかを使用します。
ルスラン

ファイル内のすべての行を1つの行として渡す方法は?
Paras Singh

8
フォームフィードはインデントに使用されません。それらのいくつかをプリンターに送信すると、紙が排出されます。あなたが説明したの\fは実際には\v-垂直タブですが、どちらもコンソールでは同じように見えます。
cprn

printf("123\f456\f789");コンソールに/> <bold> 123456789 </ bold>を表示します。
Mayur、

31

見ていウィキペディア

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


25

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

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

例:

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

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

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

}

あなたがこれをコンパイルするとき、それは(例のために。exeファイルを生成しますabc.exe

次に、これを使用して出力をファイルにリダイレクトできます。

abc > xyz.doc

次にファイルxyz.docを開くと、実際の改ページが表示されます helloooとhiiii ...の改ます。


21

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

そこで科学者たちはこの問題を解決する方法を見つけました。彼らは各行の後に2つの終了文字を追加します。1つは「キャリッジリターン」です。もう1つは「改行」で、用紙を1行上に移動するようにプリンターに指示します。

その後、コンピュータが普及し、これら2つの概念がコンピュータで使用されます。当時、ストレージデバイスは非常に高価だったため、各行の終わりに2文字を追加するのは高価であり、1つで十分であるため、どの文字を使用するかについていくつかの議論があります。

UNIX / MacおよびLinuxでは、「\ n」は各行の終わりに置かれ、Windowsでは、「\ r \ n」は各行の終わりに置かれます。この使用の結果、UNIX / Mac内のファイルは、Windowsで開くと1行で表示されます。一方、Windowsのファイルは、UNIXまたはMacで開いた場合、各行の終わりに1つの^ Mがあります。


1
OSX(BSD unixベース)のリリースにより、Macは '\ n'-Unixの行末に切り替わりました。
ジョナサンクロス

「UNIX / Macのファイルは、Windowsで開くと1行で表示されます。」WRITE.EXE(別名ワードパッド)でも問題なく表示できます。
thecarpy

18

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

ペーパープリンター端末を使用しなくなったので、これらのアクションは実際には関係ありませんが、それらを通知するために使用されたキャラクターがさまざまな化身に残っています。


実際の「キャリッジリターン」では、プリントヘッドが左に移動するのではなく、プラテンを保持しているキャリッジが右に移動します。これを行うために左手で操作される長いレバーがありました。en.wikipedia.org/wiki/Typewriterを
Mark Lakata

2
@MarkLakataタイプライターには真ですが、この答えは古い印刷端末に関するものです。たとえば、DEC LA36(columbia.edu/cu/computinghistory/la36.html)。
Peter Cardona 2013

12

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


これは、キャリッジリターンの完全な意味を説明する唯一の回答です。
リー

12

要するに :

Carriage_return(\rまたは0xD):同じ行の先頭で制御を取得する

Line_Feed(\nまたは0xA):で制御を取るために開始する、次の行

FORM_FEED(\fまたは0xC):で制御を取るために開始する、次のページ


2
このような簡潔な答えを奨励する必要があります。
user5280911

10

補足として、

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

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:コモドア8ビットマシン、Acorn BBC、ZX Spectrum、TRS-80、Apple IIファミリー、Oberon、バージョン9までのクラシックMac OS、MIT Lispマシン、OS-9

RS:QNX pre-POSIX実装

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

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スプールテキスト出力。


3

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


3

キャリッジリターンとラインフィードは、タイプライターにも当てはまります。キャリッジの左側にあるハンドル(用紙が入る場所)を少し押すと、用紙がシリンダーの周りを少し回転し、 1行を文書化します。1つの行の入力が終了し、次の行に進みたい場合は、強く押して、行を進め、キャリッジを右端までスライドさせ、キーストロークごとにキャリッジが移動するので、もう一度左から右への入力を再開しました。 。言うまでもなく、ワードラップは時代のすべてのワードプロセッシングのデフォルト設定でした。P:D


2

それらは「改行」の概念に関連する非印刷文字です。\ nは改行です。\ rは復帰です。プラットフォームが異なれば、有効な改行とは異なる意味になります。Windowsでは、新しい行は\ r \ nです。Linuxでは、\ n。Macでは、\ r。

実際には、それらを任意の文字列に配置すると、文字列の印刷に影響します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.