如何在C中擦除當(dāng)前打印的控制臺(tái)行?我正在Linux系統(tǒng)上工作。例如 -printf("hello");printf("bye");我想在同一行上打印再見,代替您好。
3 回答

慕神8447489
TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊
您可以使用VT100轉(zhuǎn)義碼。包括xterm在內(nèi)的大多數(shù)終端都支持VT100。要擦除線,此為^[[2K。在C中,它給出:
printf("%c[2K", 27);

月關(guān)寶盒
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以使用\r(回車)將光標(biāo)返回到行首:
printf("hello");
printf("\rbye");
這將在同一行上打印再見。但是,它不會(huì)刪除現(xiàn)有字符,并且由于bye比hello短,因此您最終會(huì)得到byelo。要擦除它,您可以延長新打印的時(shí)間來覆蓋多余的字符:
printf("hello");
printf("\rbye ");
或者,首先用一些空格刪除它,然后打印新字符串:
printf("hello");
printf("\r ");
printf("\rbye");
那將打印問候,然后轉(zhuǎn)到行的開頭并用空格覆蓋它,然后再次返回到開頭并打印bye。
添加回答
舉報(bào)
0/150
提交
取消