“退格”轉(zhuǎn)義字符'\ b':意外行為?所以我終于通過K&R閱讀,并且我在前幾頁中學(xué)到了一些東西,即有一個退格轉(zhuǎn)義字符\b。所以我去測試它,并且有一些非常奇怪的行為:#include <stdio.h>main (){
printf("hello worl\b\bd\n");}輸出是hello wodl有誰能解釋一下?
3 回答

Qyouu
TA貢獻(xiàn)1786條經(jīng)驗 獲得超11個贊
您的結(jié)果將根據(jù)您所使用的終端或控制臺程序類型而有所不同,但是,大多數(shù)\b
是非破壞性退格。它向后移動光標(biāo),但不會刪除那里的光標(biāo)。
因此對于該hello worl
部分,代碼輸出
你好 ^
...(^
顯示光標(biāo)所在的位置)然后輸出兩個\b
字符,將光標(biāo)向后移動兩個位置而不擦除(在終端上):
你好 ^
請注意,光標(biāo)現(xiàn)在位于r
。然后它輸出d
,覆蓋r
并給我們:
你好wodl ^
最后,它輸出\n
,這是一個非破壞性換行(同樣,在大多數(shù)終端上,顯然包括你的),所以l
保持不變,光標(biāo)移動到下一行的開頭。

米琪卡哇伊
TA貢獻(xiàn)1998條經(jīng)驗 獲得超6個贊
..........^ <=指向“打印頭”的指針
/* part1 */ printf("hello worl");
你好 ^ <=指向“打印頭”的指針
/* part2 */ printf("\b");
你好 ^ <=指向“打印頭”的指針
/* part3 */ printf("\b");
你好 ^ <=指向“打印頭”的指針
/* part4 */ printf("d\n");
你好wodl^ <=指向下一行“打印頭”的指針
- 3 回答
- 0 關(guān)注
- 699 瀏覽
添加回答
舉報
0/150
提交
取消