C++ 如果printf(";%c%c";,&x27;A&x27;,8);删除一个,为什么可以';t printf(“%c%c”和“&”x27;\n&”x27;,8);删除新行?我怎么做?
在C代码中打印后,如何删除新行字符?我想写一堆行并删除它们,在暂停后打印一些其他行,然后在循环中删除它们。就像没有滚动的实时更新。我可以打印字符并通过打印退格字符删除它们,但一旦打印新行,我就不能删除创建的行。有什么方法可以实现这一点吗?退格字符C++ 如果printf(";%c%c";,&x27;A&x27;,8);删除一个,为什么可以';t printf(“%c%c”和“&”x27;\n&”x27;,8);删除新行?我怎么做?,c++,c,printf,newline,C++,C,Printf,Newline,在C代码中打印后,如何删除新行字符?我想写一堆行并删除它们,在暂停后打印一些其他行,然后在循环中删除它们。就像没有滚动的实时更新。我可以打印字符并通过打印退格字符删除它们,但一旦打印新行,我就不能删除创建的行。有什么方法可以实现这一点吗?退格字符'\b'(ASCII 8)将移动到行中的上一个位置 如果您使用的是xterm或vt100兼容,您可以使用: #包括 #包括/*用于睡眠()*/ 内部主(空) { printf(“行\n”); 睡眠(2); printf(“\033[A”);/*将光标向上
'\b'
(ASCII 8)将移动到行中的上一个位置
如果您使用的是xterm
或vt100
兼容,您可以使用:
#包括
#包括/*用于睡眠()*/
内部主(空)
{
printf(“行\n”);
睡眠(2);
printf(“\033[A”);/*将光标向上移动一行*/
printf(“\033[K”);/*删除行*/
返回0;
}
作为替代方案,您可以查看(Unix)或(Windows/MINGW)退格字符不会“删除”任何内容。就ByTestStream/文件内容而言,它只是一个与其他任何内容类似的字符。但是,当打印到终端时,退格将光标位置向左移动一个单位,允许下一个打印的字符替换屏幕上的字符。在大多数终端上,如果您已经位于最左侧位置,则它不会执行任何操作,但即使如果在那里工作,它将不知道上一行的位置。
0x08
,或ASCII中的\b
,只是发送到stdout
的一个(特殊)字符。stdout
如何处理它取决于实现
参考资料:您应该使用备注:您(正确)使用'\n'
而不是10
,您还应该使用'\b'
而不是8
#include <stdio.h>
#include <unistd.h> /* for sleep() */
int main(void)
{
printf("Line\n");
sleep(2);
printf("\033[A"); /* move cursor one line up */
printf("\033[K"); /* delete line */
return 0;
}