2

我正在尝试像 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;
}
4

2 回答 2

3

您不刷新输出,因此它只会被缓冲并且不会刷新到终端,直到缓冲区已满。

在第一行之后添加以下行printf

fflush(stdout);
于 2011-11-14T15:02:33.080 回答
2

很难马上说出来,但请记住,数组的大小从0size - 1。这意味着:

if ( i > 4 ) 
    i = 0;
else
    i ++;

是一个错误的错误。它应该是i > 3i >= 4

至于您的实际问题,可能是因为未刷新流。

于 2011-11-14T15:01:12.593 回答