私はCで次のプログラムを作成しましたが、それを実行すると、出力を見て驚いた。
これがプログラムです
int main()
{
printf("\nab");
printf("\bsi");
printf("\rha");
}
出力は:-haiですが、\ nは改行用、\ bはバックスペース(非消去)用、\ rはキャリッジリターン用であるため、「absiha」を期待していました。したがって、\ rが適用されているため、cursonが「i」文字になると予想していましたが、それを実行して出力を見ると、完全に驚き、混乱しました。誰かが私に出力を説明できますか?
一度に一歩ずつ進んでいきましょう。
<new line>ab<backspace>si<carriage return>ha
まず、バックスペースを処理します。 「非消去」であっても、次に出力される文字は、バックスペースされたものを上書きすることに注意してください。
<new line>asi<carriage return>ha
ここで、キャリッジリターンとは、行の先頭に戻ることを意味します。したがって、「ha」は「asi」の「as」を上書きします。
<new line>hai
現在、カーソルはi
にあるため、次に出力される文字はi
を上書きします。
訪問 http://en.wikipedia.org/wiki/Escape_sequences_in_C
Escape Sequence Character \a Bell (speaker beeps) \b Backspace (non-erase) \f Form feed/clear screen \n New line \r Carriage Return \t Tab \v Vertical tab \\ Backslash \? Question mark \' Single quote \" Double quote \xnn Hexadecimal character code nn \onn Octal character code nn \nn Octal character code nn