* を含む C 文字列があり、この文字列の 3 つ星の位置を見つけたいとします。ループを通過して文字ごとにチェックする以外に、それを行うための最良/より効率的な方法は何ですか?
ありがとう
おそらく で検索したいと思うでしょうstrchr
。キャラクターの 3 番目のインスタンスが必要なため、これもループで実行します。
これが実際に自分でループを書くよりも効率的であるかどうかは疑問の余地があるかもしれませんが、おそらく遅くはなく、コードを読んでいる人には意図がより明確になります。
C 文字列は実際には文字の配列であるため、任意の文字の位置を見つけたい場合は、配列全体をトラバースして特定の位置を返す必要がありchar
ます。しかし、配列のインデックス付けは position から始まり0
ます。
1文字の位置を見つける
int str_chr_pos(const char *s,char c)
{
for(i=0;s[i]!='\0';i++)
if(c == s[i])
return i; // found at position i
return -1; //-1 means not found and check the returned value in the calling environment
}