fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <string.h>
  5.  
  6. int main(void) {
  7.  
  8. char hako[256] = ""; // 出力した文字をためていくバッファ
  9. int running = 1; // ループ継続フラグ
  10.  
  11. srand((unsigned int)time(NULL)); // 乱数の初期化
  12.  
  13. while (running) {
  14.  
  15. // 0 または 1 を生成
  16. int x = rand() % 2;
  17.  
  18. // あ or た を選ぶ(UTF-8 で 3バイト文字)
  19. const char *ch = (x == 0) ? "あ" : "た";
  20.  
  21. // 出力
  22. printf("%s", ch);
  23.  
  24. // hako に追記(strcat は安全でないが教育用途として採用)
  25. strcat(hako, ch);
  26.  
  27. // 末尾が "あたたたた" か確認(strncmp で比較)
  28. // UTF-8 は可変長なので「最後の 5 文字」を正しく検出するには
  29. // "あたたたた" をそのまま含むかを strstr で確認する方が簡易。
  30. if (strstr(hako, "あたたたた") != NULL) {
  31. printf("\nお前はもう死んでいる\n");
  32. running = 0;
  33. }
  34. }
  35.  
  36. return 0;
  37. }
  38.  
Runtime error #stdin #stdout #stderr 0s 5308KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
*** buffer overflow detected ***: ./prog terminated