603

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

  1. キャリッジリターン

  2. 改行

  3. フォームフィード

4

13 に答える 13

718

改行とは、下に進まずに現在の行の先頭に戻ることを意味します。名前が造られたときにモニターが珍しかったので、名前はプリンターの馬車から来ています。これは通常、 CR\rと省略され、ASCII 値またはとしてエスケープされます。130x0D

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

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


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

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

フォーム フィードはもう少し興味深いもので (直接使用されることはあまり一般的ではありませんが)、通常のページ セパレータの定義では、行間 (たとえば、NL、CRLF、または CR の改行シーケンスの後) または最初またはファイルの終わり。

于 2010-06-23T01:28:33.357 に答える
166

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

printf("stackoverflow\rnine")
ninekoverflow

は、カーソルが「stackoverflow」の先頭に移動したことを意味し、「nine」は 4 文字の長さであるため、最初の 4 文字を上書きします。

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

printf("stackoverflow\nnine")
stackoverflow
nine

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

printf("stackoverflow\fnine")
stackoverflow
             nine

私が次のように書くなら-

printf("stackoverflow\fnine\fgreat")
stackoverflow
             nine
                 great
于 2016-02-13T01:50:57.257 に答える
33

ウィキペディアを見てください:

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

于 2010-06-22T08:42:46.750 に答える
26

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

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

例:

このコードを C++ で記述します

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

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

}

これをコンパイルすると、exeが生成されます(例の場合abc.exe

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

abc > xyz.doc

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

于 2013-05-20T06:19:58.323 に答える
23

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

紙プリンター端末を使用しなくなったので、これらのアクションはもはや関係ありませんが、それらを合図するために使用された文字は、さまざまな化身で立ち往生しています.

于 2010-06-22T08:42:53.147 に答える
23

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

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

その後、コンピューターが普及し、これら 2 つの概念がコンピューターで使用されます。当時、記憶装置は非常に高価だったため、一部の科学者は、各行の末尾に 2 文字を追加するのは高価であると述べ、1 つで十分であるため、どちらを使用するかについていくつかの議論があります。

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

于 2015-07-09T09:52:41.480 に答える
11

補足として、

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: Commodore 8 ビット マシン、Acorn BBC、ZX Spectrum、TRS-80、Apple II ファミリー、Oberon、バージョン 9 までのクラシック Mac OS、MIT Lisp Machine、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 スプールされたテキスト出力。

于 2016-10-18T08:12:00.560 に答える
3

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

于 2010-06-22T08:42:48.717 に答える
2

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

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

于 2010-06-22T08:46:43.983 に答える