Существует ли функция в c, который возвратит индекс символа в массиве символов?

Можно также создать пользовательский элемент управления, который наследовался Маркировке, которая переопределяет свойство ID, чтобы быть тем, чем Вы хотите, чтобы это было.

20
задан Michel Keijzers 12 May 2019 в 20:10
поделиться

5 ответов

strchr возвращает указатель на первое вхождение, поэтому, чтобы найти индекс, просто возьмите смещение с начальным указателем. Например:

char values[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char find = 'E';

const char *ptr = strchr(values, find);
if(ptr) {
   int index = ptr - values;
   // do something
}
49
ответ дан 29 November 2019 в 22:52
поделиться
int index = strchr(values,find)-values;

Обратите внимание: если не найдено find , то strchr возвращает NULL , поэтому индекс будет отрицательным.

5
ответ дан 29 November 2019 в 22:52
поделиться

Там также size_t strcspn (const char * str, const char * set) ; он возвращает индекс первого появления символа в s , который включен в набор :

size_t index = strcspn(values, "E");
4
ответ дан 29 November 2019 в 22:52
поделиться

А как насчет strpos?

#include <string.h>

int index;
...
index = strpos(values, find);

Обратите внимание, что strpos ожидает строку с нулевым завершением, что означает, что вы должны добавить '\ 0' в конце. Если вы не можете этого сделать, у вас останется ручной цикл и поиск.

1
ответ дан 29 November 2019 в 22:52
поделиться

Вы можете использовать strchr , чтобы получить указатель на первое вхождение, и вычесть его (если не ноль) из исходного символа *, чтобы получить позицию.

0
ответ дан 29 November 2019 в 22:52
поделиться
Другие вопросы по тегам:

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