fork download
  1. //#include <windows.h> // (Windows)
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <unistd.h> // (Linux)
  6.  
  7. // 表示器
  8. void display_machine(char *d, int len_disp_moji, int len_buff)
  9. {
  10. char c;
  11. int i;
  12.  
  13. // 表示文字数分だけ表示
  14. fprintf(stderr, "\r");
  15. for (i = 0; i < len_disp_moji; i++) {
  16. fprintf(stderr, "%c", d[i]);
  17. }
  18. // ・左スライド
  19. // ・あふれる文字を(表示文字の長さ+表示器の長さ-1の)バッファの最後端に移動
  20. c = d[0];
  21. memmove(d, d + 1, len_buff - 1);
  22. d[len_buff - 1] = c;
  23. }
  24.  
  25. // main
  26. int main()
  27. {
  28. char *buff; // 表示文字の長さ+表示器の長さ-1のバッファ
  29. int i;
  30. char ch_sp; // 空白の文字
  31. char *h_moji; // 表示文字
  32. int len_m; // 表示文字の長さ
  33. int len_h; // 表示器の長さ
  34. int n; // スライド回数
  35.  
  36. h_moji = "Hello";
  37. ch_sp = '*';
  38. len_h = 10;
  39. len_m = strlen(h_moji);
  40. n = 100;
  41. buff = (char *) malloc(len_m + len_h - 1);
  42. memset(buff, ch_sp, len_m + len_h - 1);
  43. memmove(buff, h_moji, len_m);
  44. for (i = 0; i < n; i++) {
  45. display_machine(buff, len_h, len_m + len_h - 1);
  46. sleep(1); // 1秒ウェイト (Linux)
  47. //Sleep(1000); // 1秒ウェイト (Windows)
  48. }
  49. free(buff);
  50.  
  51. return 0;
  52. }
  53.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty