4

私はCプログラミング言語の初心者で、最近エスケープシーケンスについて勉強しています。

\n means newline
\b means backspace
\r means carriage-return

これらを次のプログラムに適用すると、haiとして出力されます。誰か説明してください。

main()
{
    printf("\nab");
    printf("\bsi");
    printf("\rha");
}
4

7 に答える 7

13

\r実際にはキャリッジリターンです(カーソルを行の先頭に移動します)。

あなたのプログラムは改行 ( \n) に続いて "ab" を出力し、次にバックスペース ( \b) (b の上) "si" を出力するため、画面に "asi" が表示されます。
\r、カーソルを行頭に移動し、画面に「hai」を残して「ha」を出力します。

于 2013-08-07T08:46:28.307 に答える
1

\b はバックスペース用です。つまり、書き込んだばかりの文字を削除します。
\r は、カーソルを現在の行の一番左の位置に戻します。


z がカーソルを表すとします。
ステートメント 1 の後。

\n
abz

バックスペースの後。

az

ステートメント 2 の後。

asiz

帰国後。

zbi

ステートメント 3 の後

haiz

于 2013-08-07T08:49:29.510 に答える
0

ここにあなたのコードで

  1. \r

    \r means Carriage Return, which means: return the cursor to the beginning of the line in more simple words we can say that it's deleting each character from the active position upto the beginning.
    
  2. \n

    \n mean New Line
    
  3. \b

    \b mean Backspace
    

一度に 1 つずつ見てみましょう。

<new line>ab<backspace>si<carriage return>ha

まず、バックスペースを処理します。「非消去」であっても、出力される次の文字は、バックスペースされたものを上書きすることに注意してください。

<new line>asi<carriage return>ha

さて、改行は行頭に戻ることを意味します。したがって、「ha」は「as」の「as」を上書きします。

<new line>hai

現在、カーソルは現在 i にあるため、次に出力される文字は i を上書きします。

于 2013-08-07T09:18:26.650 に答える