私はCプログラミング言語の初心者で、最近エスケープシーケンスについて勉強しています。
\n means newline
\b means backspace
\r means carriage-return
これらを次のプログラムに適用すると、haiとして出力されます。誰か説明してください。
main()
{
printf("\nab");
printf("\bsi");
printf("\rha");
}
私はCプログラミング言語の初心者で、最近エスケープシーケンスについて勉強しています。
\n means newline
\b means backspace
\r means carriage-return
これらを次のプログラムに適用すると、haiとして出力されます。誰か説明してください。
main()
{
printf("\nab");
printf("\bsi");
printf("\rha");
}
\r
実際にはキャリッジリターンです(カーソルを行の先頭に移動します)。
あなたのプログラムは改行 ( \n
) に続いて "ab" を出力し、次にバックスペース ( \b
) (b の上) "si" を出力するため、画面に "asi" が表示されます。
は\r
、カーソルを行頭に移動し、画面に「hai」を残して「ha」を出力します。
\b はバックスペース用です。つまり、書き込んだばかりの文字を削除します。
\r は、カーソルを現在の行の一番左の位置に戻します。
z がカーソルを表すとします。
ステートメント 1 の後。
\n
abz
バックスペースの後。
az
ステートメント 2 の後。
asiz
帰国後。
zbi
ステートメント 3 の後
haiz
ここにあなたのコードで
\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.
\n
\n mean New Line
\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 を上書きします。