我正在尝试像FreeBSD一样在启动画面中创建一个简单的进度条,显示/,| ,\, - 递归,但以下代码现在输出
#include <stdio.h>
#include <unistd.h>
int main ( int argc , char **argv )
{
char arrows[4] = { '/' , '|' , '\\' , '-' };
int i = 0;
while (1)
{
printf ( "%c" , arrows[i] );
if ( i > 3 )
i = 0;
else
i ++;
sleep (1);
printf ( "\b" );
}
return 0;
}
答案 0 :(得分:3)
你没有刷新输出,所以它只会被缓冲而不会刷新到终端,直到缓冲区已满。
在第一个printf
之后添加以下行:
fflush(stdout);
答案 1 :(得分:2)
很难立即告知,但请记住,大小的数组从0
到size - 1
。这意味着:
if ( i > 4 )
i = 0;
else
i ++;
是一个错误的错误。它应该是i > 3
或i >= 4
。
至于你的实际问题,可能是因为没有刷新流。