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

すぐにはわかりませんが、配列のサイズは から0までであることを覚えておいてsize - 1ください。つまり、次のようになります。

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

オフバイワンエラーです。i > 3またはのいずれか である必要がありますi >= 4

実際の問題に関しては、おそらくストリームがフラッシュされていないことが原因です。

于 2011-11-14T15:01:12.593 に答える