1. ホーム
  2. c

[解決済み] バックスペース」エスケープ文字' \b':予期せぬ動作?

2022-02-17 21:57:07

質問

ということで、やっとこさ読み進めているのが K&R 最初の数ページで、バックスペースのエスケープ文字があることを知りました。 \b .

そこで、テストしてみると、非常に奇妙な動作がありました。

#include <stdio.h>

main ()
{
    printf("hello worl\b\bd\n");
}

出力は

hello wodl

どなたか説明してください。

どのように解決するのですか?

どのような端末やコンソールプログラムを使用しているかによって結果は異なりますが、ほとんどの場合 \b 非破壊的 バックスペース。カーソルを後方に移動させますが、そこにあるものを消すことはできません。

そのため hello worl の部分は、コードが出力します。

こんにちは
          ^

...(ここで ^ はカーソルがある場所を示しています)そして、2つの \b という文字が表示され、カーソルが2つ後ろに移動します。 なし を消去する(端末の場合)。

こんにちは
        ^

カーソルが r . そして、次のように出力されます。 d を上書きします。 r となり、私たちに与えてくれます。

hello wodl
         ^

最後に、次のように出力されます。 \n これは非破壊的な改行です(あなたの端末も含め、ほとんどの端末で)。 l は変更されず、カーソルが次の行の先頭に移動します。