Предположим, что у меня есть строка "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.
}
Этот код в настоящее время не протестирован, но демонстрирует правильную концепцию.