マニュアルの典型的な例:
echo strrchr("Hello world!","world");
出力は次のとおりです: world!
しかし、試し続けると、次のような奇妙な結果が得られます:
echo strrchr(" Hello aaaaworld!"," aaaaworld");
出力: aworld!
echo strrchr("Hello cacworld!","cacworld");
出力: cworld!
echo strrchr("abc123cache123","cache");
出力: che123
echo strrchr("cache","cache");
出力: che
待て、つまり、戻り値は不完全になり、常に最初の数文字が欠落します。理由はわかりません。 ?
2 番目のパラメータ:
1. 複数の文字が含まれる場合、[最初の文字] のみが使用されます
2. 文字列でない場合は、整数に変換され、文字列の値として扱われます
例: echo strrchr("Hello aaaaworld!", "aaaaworld");
a のみが検索文字列として使用され、出力は次のようになります: aworld!右です
ニードルに複数の文字が含まれる場合、最初の文字のみが使用されます
ニードルに複数の文字が含まれる場合、最初の文字のみが使用されます。この動作は strstr() とは異なります。
w3school:
検索する文字を指定します。引数が数値の場合、ASCII 数値に一致する文字を検索します。
明らかに、後者は「最初の文字のみを使用する」という指示を無視しています
しかし、「検索される文字」と「検索される文字列」は依然として異なります
strrchr()この関数は、別の文字列内で最後に出現した文字列を検索し、その位置から文字列の末尾までのすべての文字を返します。
関数の紹介では文字列の検索について説明し、構文の紹介では 2 番目のパラメータとしての char について説明しているようです。では、例では特定の文字を直接使用して文字列の世界を作成しないのはなぜでしょうか。人々を誤解させるためですか?
お二人ともご回答ありがとうございました。