Как я нахожу индекс символа в строке в C?

Предположим, что у меня есть строка "qwerty" и я хочу найти индексное положение e символ в нем. (В этом случае индекс был бы 2)

Как я делаю это в C?

Я нашел strchr функционируйте, но это возвращает указатель на символ а не индекс.

36
задан Mateusz Piotrowski 29 June 2016 в 12:35
поделиться

3 ответа

Просто вычтите строковый адрес из того, что возвращает strchr:

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

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

Обратите внимание, что результат равен нулю, поэтому в приведенном выше примере он будет равен 2.

69
ответ дан 27 November 2019 в 05:36
поделиться

Вы также можете использовать strcspn (string, "e") , но это может быть намного медленнее, так как он может обрабатывать поиск нескольких возможных символов. Лучше всего использовать strchr и вычесть указатель.

7
ответ дан 27 November 2019 в 05:36
поделиться
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.
}

Этот код в настоящее время не протестирован, но демонстрирует правильную концепцию.

3
ответ дан 27 November 2019 в 05:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: