//#include <windows.h>            // (Windows)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>             // (Linux)

// 表示器
void display_machine(char *d, int len)
{
    char c;
    int i;

    // 表示文字数分だけ表示
    fprintf(stderr, "\r");
    for (i = 0; i < len; i++) {
        fprintf(stderr, "%c", d[i]);
    }
    // ・左スライド
    // ・あふれる文字を(表示文字の2倍の長さの)バッファの最後端に移動
    c = d[0];
    memmove(d, d + 1, len * 2 - 1);
    d[len * 2 - 1] = c;
}

//      main
int main()
{
    char *buff;                     // 表示文字の2倍の長さのバッファ
    int i;
    char *h_moji = "HyoujiMoji";    // 表示文字
    int len = strlen(h_moji);       // 表示文字の長さ
    int n = len * 4 + 1;            // スライド回数

    buff = (char *) malloc(len * 2);
    memset(buff, ' ', len * 2);
    memmove(buff, h_moji, len);
    for (i = 0; i < n; i++) {
        display_machine(buff, len);
        sleep(1);               // 1秒ウェイト (Linux)
        //Sleep(1000);            // 1秒ウェイト (Windows)
    }
    free(buff);

    return 0;
}
