今回は、文字列を先頭から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キー を押す。
(参考)新・明解C言語 中級編 柴田 望洋(著)SBクリエイティブ
コメント