Вопросы | c

Функция String.indexOf в C

Вопрос

Ryan Ahearn | 67591 просмотров | рейтинг: 0

Есть ли функция библиотеки C, которая будет возвращать индекс символа в строке? Пока что все, что я нашел, это функции типа strstr, которые будут возвращать найденный символ *, а не его местоположение в исходной строке.



Ответы

Bill

+ 0 -
Если вы не полностью привязаны к чистому C и можете использовать string.h, то есть strchr () Глянь сюда  


Adam Haile

+ 33 -
strstr возвращает указатель на найденный символ, поэтому вы можете использовать арифметику указателей: (Примечание: этот код не проверен на его способность к компиляции, он находится в шаге от псевдокода.)
 char * source = "test string";         /* assume source address is */
                                       /* 0x10 for example */
char * found = strstr( source, "in" ); /* should return 0x18 */
if (found != NULL)                     /* strstr returns NULL if item not found */
{
  int index = found - source;          /* index is 8 */
                                       /* source[8] gets you "i" */
}
 

 


Michal Sznajder

+ 11 -
РЕДАКТИРОВАТЬ: strchr лучше только для одного символа. Указатель арифметики говорит Hellow!
 char *pos = strchr (myString, '#');
int pos = pos ? pos - myString : -1;
 

Важно: strchr () возвращает NULL, если строка не найдена  


Kyle Cronin

+ 3 -
Вы можете использовать strstr для достижения желаемого. Пример:
 char *a = "Hello World!";
char *b = strstr(a, "World");

int position = b - a;

printf("the offset is %i/n", position);
 

Это дает результат:
 the offset is 6
 

 


Jonathan Works

+ 13 -
я думаю что
  size_t strcspn (const char * str1, const char * str2);
это то, что вы хотите. Вот пример, взятый отсюда:
 /* strcspn example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] = "fcba73";
  char keys[] = "1234567890";
  int i;
  i = strcspn (str,keys);
  printf ("The first number in str is at position %d./n",i+1);
  return 0;
}
 

 


Fehmi Noyan ISI

+ 0 -
Пиши свой :) Код из лицензированной библиотеки обработки строк BSD для C, называемый zString https://github.com/fnoyanisi/zString
 int zstring_search_chr(char *token,char s){
    if (!token || s=='/0')
        return 0;

    for (;*token; token++)
        if (*token == s)
            return 1;

    return 0;
}
 

 


Anonymous

+ 0 -
можно написать
 s="bvbrburbhlkvp";
int index=strstr(&s,"h")-&s;
 

найти индекс 'h' в данном искажении.


Теги

c | string

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

Есть ли в c функция, которая будет возвращать индекс char в массиве char?