「バックスペース」エスケープ文字 '\b': 予期しない動作? 質問する

「バックスペース」エスケープ文字 '\b': 予期しない動作? 質問する

ようやく読み終えたK&Rそして、最初の数ページで、バックスペース エスケープ文字があることを知りました\b

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

#include <stdio.h>

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

出力は

hello wodl

誰かこれを説明できますか?

ベストアンサー1

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

部分についてはhello worl、コードは次のように出力します

こんにちは世界
          ^

...(^カーソルの位置を示します)次に、\bカーソルを2つ後ろへ移動する2つの文字を出力します。それなし消去(端末上で):

こんにちは世界
        ^

カーソルが の上にあることに注意してくださいr。次に が出力されd、 が上書きされrて次のようになります。

こんにちは、wodl
         ^

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

おすすめ記事