Shammer's Philosophy

My private adversaria

文字をテロップのように表示する

BohYoh.com【著書】解きながら学ぶC言語の問題の一つとして取り上げられていた。putchar('\r')を使用することで改行せずに同一行の先頭にカーソルを移動できる。そこから文字をずらして表示させていけば、テロップのように表示できる。

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

int main(int argc, char * args[]){
    int cnt = 0;
    char message[] = "Hello World! ";
    int length = strlen(message);

    while (1) {
	int i;
	putchar('\r'); // move top
	for( i = 0 ; i < length ; i++ ) {
	    if ( cnt + i < length ) {
		putchar(message[cnt + i]);
	    }
	    else {
		putchar(message[cnt + i - length]);
	    }
	}
	if( cnt < length ){
	    cnt ++;
	}
	else {
	    cnt = 0;
	}
    }
    return 0;
}

延々と Hello World! を表示させ続けるようにしてみた。