0

C で単純な「タイプライター」エフェクトをプログラムしようとしています。このエフェクトでは、テキストが一度に 1 文字ずつ遅れて表示されます。ここに私が持っている機能があります:

#include <stdio.h>
#include <unistd.h>

void typestring(const char *str, useconds_t delay)
{
    while (*str) {
        putchar(*(str++));
        usleep(delay);
    }
}

問題は、 a が表示されるまでテキストが実際に表示されないこと\nです。私は何を間違っていますか?

4

4 に答える 4

0

出力ストリームはバッファリングされるため、 \n が表示されるまでテキストは実際には表示されません '\n' は出力ストリームをフラッシュ (ハード フラッシュ) し、この関数 [ fflush(stdout) ]を呼び出すことができます。

while (*str) {
        putchar(*(str++));
        fflush(stdout);
        usleep(delay);
    }

またはあなたが使用することができます

while (*str) {
            printf("%c\n",*(str++));
            usleep(delay);
        }
于 2013-04-22T09:07:37.340 に答える