文字列が"qwerty"
あり、その中の文字のインデックス位置を見つけたいとしますe
。(この場合、インデックスは になります2
)
Cでどうすればいいですか?
関数を見つけましたstrchr
が、インデックスではなく文字へのポインターを返します。
strchr が返すものから文字列アドレスを差し引くだけです。
char *string = "qwerty";
char *e;
int index;
e = strchr(string, 'e');
index = (int)(e - string);
結果はゼロベースなので、上記の例では 2 になることに注意してください。
も使用できますstrcspn(string, "e")
が、複数の可能な文字の検索を処理できるため、これははるかに遅くなる可能性があります。ポインターを使用strchr
して減算するのが最善の方法です。
void myFunc(char* str, char c)
{
char* ptr;
int index;
ptr = strchr(str, c);
if (ptr == NULL)
{
printf("Character not found\n");
return;
}
index = ptr - str;
printf("The index is %d\n", index);
ASSERT(str[index] == c); // Verify that the character at index is the one we want.
}
このコードは現在テストされていませんが、適切な概念を示しています。