這裏是代碼如下:爲什麼字符串末尾的' b'不起作用?
#include <stdio.h>
int main(int argc, char* argv[])
{
printf("WORD\b\b WORD\b\b");
return 0;
}
產生以下輸出:
WO WORD
問題是爲什麼最後\b
不會對所述第二單詞的效果更具體地,當它們是在端的字符串?
這裏是代碼如下:爲什麼字符串末尾的' b'不起作用?
#include <stdio.h>
int main(int argc, char* argv[])
{
printf("WORD\b\b WORD\b\b");
return 0;
}
產生以下輸出:
WO WORD
問題是爲什麼最後\b
不會對所述第二單詞的效果更具體地,當它們是在端的字符串?
它確實有影響,其影響是將光標移回,但'\b'
不會刪除任何字符,除非您覆蓋它們。
如果您想要打印其他內容,打印將從當前光標位置恢復。
注意:此行爲取決於您用於顯示文本的終端。
這主要取決於您使用的shell /終端以及它如何解釋退格字符。
您在上面描述的行爲發生在Windows的命令提示符中。該終端顯然將光標移回退格上的一個空格,但不刪除該字符。在退格之後打印的任何字符都會覆蓋先前寫入的字符。
例如,如果你做到這一點:
printf("WORD\b\b WORD\b\bx");
你的輸出會是這樣:
WO WOxD
相反,在下面的bash下的結果運行的Ubuntu的機器上的代碼輸出:
WO WO
你在使用什麼操作系統和終端? – dbush
我想這是因爲'\ b'只將光標向後移動一步,而不是刪除任何字符。 'R'和'D'從第一個'WORD'消失的原因是因爲你用空間和'W'覆蓋它們。 – gurka
'WORD \ b \ b WORD \ b \ b'會發生什麼?我懷疑你的終端將光標移回但不擦除字符。 – Quentin