2016-07-26 58 views
5

這裏是代碼如下:爲什麼字符串末尾的' b'不起作用?

#include <stdio.h> 

int main(int argc, char* argv[]) 
{ 
    printf("WORD\b\b WORD\b\b"); 
    return 0; 
} 

產生以下輸出:

WO WORD 

問題是爲什麼最後\b不會對所述第二單詞的效果更具體地,當它們是在端的字符串?

+0

你在使用什麼操作系統和終端? – dbush

+5

我想這是因爲'\ b'只將光標向後移動一步,而不是刪除任何字符。 'R'和'D'從第一個'WORD'消失的原因是因爲你用空間和'W'覆蓋它們。 – gurka

+1

'WORD \ b \ b WORD \ b \ b'會發生什麼?我懷疑你的終端將光標移回但不擦除字符。 – Quentin

回答

4

它確實有影響,其影響是將光標移回,但'\b'不會刪除任何字符,除非您覆蓋它們。

如果您想要打印其他內容,打印將從當前光標位置恢復。

注意:此行爲取決於您用於顯示文本的終端。

2

這主要取決於您使用的shell /終端以及它如何解釋退格字符。

您在上面描述的行爲發生在Windows的命令提示符中。該終端顯然將光標移回退格上的一個空格,但不刪除該字符。在退格之後打印的任何字符都會覆蓋先前寫入的字符。

例如,如果你做到這一點:

printf("WORD\b\b WORD\b\bx"); 

你的輸出會是這樣:

WO WOxD 

相反,在下面的bash下的結果運行的Ubuntu的機器上的代碼輸出:

WO WO 
相關問題