#include <stdio.h>
#include <string.h>
int main(void) {
// 小数点以下200桁の円周率(文字列として定義。自動的に連結されます)
const char *pi_digits =
"14159265358979323846264338327950288419716939937510"
"58209749445923078164062862089986280348253421170679"
"82148086513282306647093844609550582231725359408128"
"48111745028410270193852110555964462294895493038196";
const char *target = "69399";
// strstr関数で文字列から "69399" を検索
char *match
= strstr(pi_digits
, target
);
if (match != NULL) {
// ポインタの引き算により、0始まりのインデックスを計算
int index = match - pi_digits;
// 小数点第1位を「1桁目」とするため、インデックスに+1します
int digit_position = index + 1;
printf("文字列 '%s' が見つかりました。\n", target
); printf("小数点以下 %d 桁目から始まります。\n\n", digit_position
);
// 周辺の文字列を切り出して確認表示(前後の安全な範囲を指定)
for (int i = index - 5; i < index; i++) {
}
for (int i = index + 5; i < index + 10; i++) {
if (pi_digits
[i
] != '\0') putchar(pi_digits
[i
]); }
} else {
printf("文字列 '%s' は最初の200桁の中に見つかりませんでした。\n", target
); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCmludCBtYWluKHZvaWQpIHsKICAgIC8vIOWwj+aVsOeCueS7peS4izIwMOahgeOBruWGhuWRqOeOh++8iOaWh+Wtl+WIl+OBqOOBl+OBpuWumue+qeOAguiHquWLleeahOOBq+mAo+e1kOOBleOCjOOBvuOBme+8iQogICAgY29uc3QgY2hhciAqcGlfZGlnaXRzID0gCiAgICAgICAgIjE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzM4MzI3OTUwMjg4NDE5NzE2OTM5OTM3NTEwIgogICAgICAgICI1ODIwOTc0OTQ0NTkyMzA3ODE2NDA2Mjg2MjA4OTk4NjI4MDM0ODI1MzQyMTE3MDY3OSIKICAgICAgICAiODIxNDgwODY1MTMyODIzMDY2NDcwOTM4NDQ2MDk1NTA1ODIyMzE3MjUzNTk0MDgxMjgiCiAgICAgICAgIjQ4MTExNzQ1MDI4NDEwMjcwMTkzODUyMTEwNTU1OTY0NDYyMjk0ODk1NDkzMDM4MTk2IjsKCiAgICBjb25zdCBjaGFyICp0YXJnZXQgPSAiNjkzOTkiOwoKICAgIC8vIHN0cnN0cumWouaVsOOBp+aWh+Wtl+WIl+OBi+OCiSAiNjkzOTkiIOOCkuaknOe0ogogICAgY2hhciAqbWF0Y2ggPSBzdHJzdHIocGlfZGlnaXRzLCB0YXJnZXQpOwoKICAgIGlmIChtYXRjaCAhPSBOVUxMKSB7CiAgICAgICAgLy8g44Od44Kk44Oz44K/44Gu5byV44GN566X44Gr44KI44KK44CBMOWni+OBvuOCiuOBruOCpOODs+ODh+ODg+OCr+OCueOCkuioiOeulwogICAgICAgIGludCBpbmRleCA9IG1hdGNoIC0gcGlfZGlnaXRzOwogICAgICAgIAogICAgICAgIC8vIOWwj+aVsOeCueesrDHkvY3jgpLjgIwx5qGB55uu44CN44Go44GZ44KL44Gf44KB44CB44Kk44Oz44OH44OD44Kv44K544GrKzHjgZfjgb7jgZkKICAgICAgICBpbnQgZGlnaXRfcG9zaXRpb24gPSBpbmRleCArIDE7CiAgICAgICAgCiAgICAgICAgcHJpbnRmKCLmloflrZfliJcgJyVzJyDjgYzopovjgaTjgYvjgorjgb7jgZfjgZ/jgIJcbiIsIHRhcmdldCk7CiAgICAgICAgcHJpbnRmKCLlsI/mlbDngrnku6XkuIsgJWQg5qGB55uu44GL44KJ5aeL44G+44KK44G+44GZ44CCXG5cbiIsIGRpZ2l0X3Bvc2l0aW9uKTsKICAgICAgICAKICAgICAgICAvLyDlkajovrrjga7mloflrZfliJfjgpLliIfjgorlh7rjgZfjgabnorroqo3ooajnpLrvvIjliY3lvozjga7lronlhajjgarnr4Tlm7LjgpLmjIflrprvvIkKICAgICAgICBwcmludGYoIuWRqOi+uuOBruaVsOWtlzogLi4uIik7CiAgICAgICAgZm9yIChpbnQgaSA9IGluZGV4IC0gNTsgaSA8IGluZGV4OyBpKyspIHsKICAgICAgICAgICAgaWYgKGkgPj0gMCkgcHV0Y2hhcihwaV9kaWdpdHNbaV0pOwogICAgICAgIH0KICAgICAgICBwcmludGYoIuOAkCVz44CRIiwgdGFyZ2V0KTsKICAgICAgICBmb3IgKGludCBpID0gaW5kZXggKyA1OyBpIDwgaW5kZXggKyAxMDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChwaV9kaWdpdHNbaV0gIT0gJ1wwJykgcHV0Y2hhcihwaV9kaWdpdHNbaV0pOwogICAgICAgIH0KICAgICAgICBwcmludGYoIi4uLlxuIik7CiAgICB9IGVsc2UgewogICAgICAgIHByaW50Zigi5paH5a2X5YiXICclcycg44Gv5pyA5Yid44GuMjAw5qGB44Gu5Lit44Gr6KaL44Gk44GL44KK44G+44Gb44KT44Gn44GX44Gf44CCXG4iLCB0YXJnZXQpOwogICAgfQoKICAgIHJldHVybiAwOwp9