Подтвердить что ты не робот

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

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

Как мне это сделать в C?

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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.
}

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

Ответ 4

Как насчет:

char *string = "qwerty";
char *e = string;
int idx = 0;
while (*e++ != 'e') idx++;

копирование в e, чтобы сохранить исходную строку, я полагаю, если вам все равно, что вы можете просто работать над * string