46

文字列が"qwerty"あり、その中の文字のインデックス位置を見つけたいとしますe。(この場合、インデックスは になります2)

Cでどうすればいいですか?

関数を見つけましたstrchrが、インデックスではなく文字へのポインターを返します。

4

5 に答える 5

95

strchr が返すものから文字列アドレスを差し引くだけです。

char *string = "qwerty";
char *e;
int index;

e = strchr(string, 'e');
index = (int)(e - string);

結果はゼロベースなので、上記の例では 2 になることに注意してください。

于 2010-07-10T02:56:48.557 に答える
8

も使用できますstrcspn(string, "e")が、複数の可能な文字の検索を処理できるため、これははるかに遅くなる可能性があります。ポインターを使用strchrして減算するのが最善の方法です。

于 2010-07-10T03:36:55.763 に答える
4
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.
}

このコードは現在テストされていませんが、適切な概念を示しています。

于 2010-07-10T02:57:10.740 に答える