【问题标题】:Implement BSD style progress bar in C?在 C 中实现 BSD 样式的进度条?
【发布时间】:2011-12-28 17:38:26
【问题描述】:

我正在尝试制作一个像 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;
}

【问题讨论】:

标签: c printf sleep backspace


【解决方案1】:

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

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

是一个错误的错误。它应该是i &gt; 3i &gt;= 4

至于你的实际问题,可能是因为流没有被刷新。

【讨论】:

    【解决方案2】:

    你不刷新输出,所以它只会被缓冲而不刷新到终端,直到缓冲区满。

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

    fflush(stdout);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-16
      • 2010-11-18
      • 2019-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-24
      • 1970-01-01
      相关资源
      最近更新 更多