C言語のきほん「テロップ表示(準備)」

スポンサーリンク
C言語

今回は、文字列を先頭から1文字ずつ表示していき、すべての文字を表示し終わったら、逆に後ろから1文字ずつ消していくプログラムをご紹介しよう。

なお、本プログラムは、
 Windows 11 Home(23H2)上で、Visual Studio Code(1.93.1)を使用して作成し、gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0で コンパイルしている。

//テロップ表示:文字列を1文字ずつ表示して後ろから1文字ずつ消去する

#include <time.h>
#include <stdio.h>
#include <string.h>

//Xミリ秒経過するのを待つ
int sleep(unsigned long x)
{
    clock_t c1 = clock(),c2;

    do
    {
       if ((c2 = clock()) == (clock_t) -1)
        return 0;

    } while (1000.0 * (c2 - c1)/ CLOCKS_PER_SEC < x);
        return 1;
    
}

int main(void)
{
    int i;
    char name[] = "Rocky Seven";
    int name_len = strlen(name);

    while (1)
    {
       for ( i = 0; i < name_len; i++)
       {
        putchar(name[i]);
        fflush(stdout);
        sleep(500);
       }
       for ( i = 0; i < name_len; i++) 
       {
        printf("\b \b");
        fflush(stdout);
        sleep(500);
    
       }

    }
    return 0;
}

strlen関数は、文字列の長さ(ナル文字を含まない文字列)を求める関数である。

なお、二つのfor文は、それを囲むwhile(1)によって無限に繰り返す。

したがって、プログラムの終了は、強制的に行う必要がある。

Windows :Ctrl キー + キー を押す。

参考)新・明解C言語 中級編 柴田 望洋(著)SBクリエイティブ

コメント

タイトルとURLをコピーしました