C言語のきほん「テロップ表示(右方向)」

スポンサーリンク
C言語

今回は、テロップの流れを「右方向」に変更したプログラムをご紹介しよう。

実行すると、文字列が左から右へ流れていく。

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

なお、このプログラムは、前回同様に無限に繰り返す。(無限ループ)

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

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

//テロップ表示:右方向へ文字を流す

#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;
    int cnt = 0;                    //何文字目が先頭か
    char name[] = "Rocky Seven ";    //表示する文字列
    int name_len = strlen(name);    //文字列nameの文字数

    while (1)
    {
       putchar('\r');                //カーソルを行の先頭へ
       for ( i = 0; i < name_len; i++)
       {
        if (cnt + i < name_len)
            putchar(name[cnt + i]);
        else
            putchar(name[cnt + i - name_len]);

       }
        fflush(stdout);
        sleep(500);
        
        if (cnt > 0)
            cnt--;
        else
            cnt = name_len - 1;     //次回は先頭文字から表示
    }
     
    return 0;
}

左方向のプログラムと違うのは、下記の箇所である。

if (cnt > 0)
      cnt--;
 else
      cnt = name_len - 1;   

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

コメント

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