似乎在write()中传递的转义字符不能正常工作(<至少)。
printf("test");
printf("\r1234);
返回
123
正如所料,但
printf("test");
write(1, "\r1234, 5);
返回
1234test
因此不会覆盖该行
我想知道如何擦除/覆盖C中的一行(我在linux btw上) 谢谢
答案 0 :(得分:2)
尝试刷新输出流: 代码:
#include <stdio.h>
#include <unistd.h>
int main()
{
printf("test");
fflush(stdout);
write(1, "\r1234", 5);
return 0;
}
输出:
1234
答案 1 :(得分:2)
您的 REAL 问题是printf
已缓冲且write
是即时的。所以写入先行。是的它确实发送了\r
,终端读取它并移动到行的前面。当程序退出时,它会刷新STDOUT缓冲区并打印printf内容。