Предположим, что у меня есть строка "qwerty", и я хочу найти в ней позицию индекса e. (В этом случае индекс будет 2)
Как мне это сделать в C?
Я нашел функцию strchr, но возвращает указатель на символ, а не индекс.
Ответ 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