C 中 write() 中的转义字符

escaped characters in write() in C

似乎在 write() 中传递的转义字符不能(至少)正常工作。

printf("test");
printf("\r1234);

return

123

符合预期,但是

printf("test");
write(1, "\r1234, 5);

return

1234test

所以该行没有被覆盖

我想知道如何 erase/overwrite C 中的一行(我在 linux 顺便说一句) 谢谢

尝试刷新输出流: 代码:

#include <stdio.h>
#include <unistd.h>

int main()
{
    printf("test");
    fflush(stdout);
    write(1, "\r1234", 5);
    return 0;
}

输出:

1234

您的 REAL 问题是 printf 是缓冲的,而 write 是即时的。所以先写。是的,它确实发送了 \r,终端读取它并移动到行的前面。当程序退出时,它会刷新 STDOUT 缓冲区并打印 printf 内容。