今回は、文字列をテロップのように流して表示するプログラムをご紹介しよう。
実行すると、文字列が右から左へ流れていく。
なお、本プログラムは、
Windows 11 Home(23H2)上で、Visual Studio Code(1.93.1)を使用して作成し、gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0で コンパイルしている。
なお、このプログラムは、前回同様に無限に繰り返す。(無限ループ)
したがって、プログラムの終了は、強制的に行う必要がある。
Windows :Ctrl キー + cキー を押す。
//テロップ表示:左方向へ文字を流す
#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 < name_len - 1)
cnt++; //次回は一つ後ろの文字から表示
else
cnt = 0; //次回は先頭文字から表示
}
return 0;
}
本プログラムは、文字列「Rocky Seven」を左方向へと0.5秒間隔のスピードで流して、循環的にテロップを表示する。
一文字ずつずらしながら表示を繰り返すことによって、テロップのような表示効果を生み出している。
(参考)新・明解C言語 中級編 柴田 望洋(著)SBクリエイティブ
コメント