fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main(void) {
  5. // 小数点以下200桁の円周率(文字列として定義。自動的に連結されます)
  6. const char *pi_digits =
  7. "14159265358979323846264338327950288419716939937510"
  8. "58209749445923078164062862089986280348253421170679"
  9. "82148086513282306647093844609550582231725359408128"
  10. "48111745028410270193852110555964462294895493038196";
  11.  
  12. const char *target = "69399";
  13.  
  14. // strstr関数で文字列から "69399" を検索
  15. char *match = strstr(pi_digits, target);
  16.  
  17. if (match != NULL) {
  18. // ポインタの引き算により、0始まりのインデックスを計算
  19. int index = match - pi_digits;
  20.  
  21. // 小数点第1位を「1桁目」とするため、インデックスに+1します
  22. int digit_position = index + 1;
  23.  
  24. printf("文字列 '%s' が見つかりました。\n", target);
  25. printf("小数点以下 %d 桁目から始まります。\n\n", digit_position);
  26.  
  27. // 周辺の文字列を切り出して確認表示(前後の安全な範囲を指定)
  28. printf("周辺の数字: ...");
  29. for (int i = index - 5; i < index; i++) {
  30. if (i >= 0) putchar(pi_digits[i]);
  31. }
  32. printf("【%s】", target);
  33. for (int i = index + 5; i < index + 10; i++) {
  34. if (pi_digits[i] != '\0') putchar(pi_digits[i]);
  35. }
  36. printf("...\n");
  37. } else {
  38. printf("文字列 '%s' は最初の200桁の中に見つかりませんでした。\n", target);
  39. }
  40.  
  41. return 0;
  42. }
Success #stdin #stdout 0s 5304KB
stdin
Standard input is empty
stdout
文字列 '69399' が見つかりました。
小数点以下 41 桁目から始まります。

周辺の数字: ...41971【69399】37510...