我正在尝试在终端中打印数字.数字必须打印在同一位置.所以1应该打印然后1将被删除,2并将打印等.我正在使用以下C代码:
#include <stdio.h>
#include <unistd.h>
int main(int argc, char **argv)
{
useconds_t milisecs;
milisecs = 500000;
int i;
char buffer[1024];
/* print numbers in-place */
for (i=0;i<10;i++) {
printf("%d\r",i);
fflush(stdout);
usleep(milisecs);
}
/* print numbers in-place using write() */
for (i=0;i<10;i++) {
snprintf(buffer, sizeof(buffer), "%d\r", i);
write(1,buffer,1);
usleep(milisecs);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
第一个for循环使用printf()并按预期工作.然而第二个循环与write()打印0123456789.如何让第二个循环输出与第一个循环相同的文本?我认为问题与\r不被承认有关write().