C++ 如果printf(";%c%c";,&x27;A&x27;,8);删除一个,为什么可以';t printf(“%c%c”和“&”x27;\n&”x27;,8);删除新行?我怎么做?

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”);/*将光标向上

在C代码中打印后,如何删除新行字符?我想写一堆行并删除它们,在暂停后打印一些其他行,然后在循环中删除它们。就像没有滚动的实时更新。我可以打印字符并通过打印退格字符删除它们,但一旦打印新行,我就不能删除创建的行。有什么方法可以实现这一点吗?

退格字符
'\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;
}