String.indexOf função em C

votos
38

Existe uma função de biblioteca C que irá retornar o índice de um caractere em uma string?

Até agora, tudo que eu encontrei são funções como strstr que irá retornar a encontrou char *, e não a sua localização na string original.

Publicado 07/08/2008 em 16:00
fonte usuário
Em outras línguas...                            


7 respostas

votos
33

strstr retorna um ponteiro para o caractere encontrado, para que você possa usar a aritmética de ponteiro: (Nota:., este código não testado para a sua capacidade de compilar, é um passo de pseudocódigo)

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" */
}
Respondeu 07/08/2008 em 16:04
fonte usuário

votos
11

EDIT: strchr é melhor apenas para um caractere. aritméticas ponteiro diz "Hellow!":

char *pos = strchr (myString, '#');
int pos = pos ? pos - myString : -1;

Importante: strchr () retorna NULL se a string é encontrado

Respondeu 07/08/2008 em 16:05
fonte usuário

votos
10

eu penso isso

strcspn size_t (const char * seq1, const char * seq2);

é o que você quer. Aqui está um exemplo retirado aqui :

/* 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;
}
Respondeu 07/08/2008 em 16:09
fonte usuário

votos
3

Você pode usar strstr para realizar o que você quer. Exemplo:

char *a = "Hello World!";
char *b = strstr(a, "World");

int position = b - a;

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

Isso produz o resultado:

the offset is 6
Respondeu 07/08/2008 em 16:07
fonte usuário

votos
0

Você pode escrever

s="bvbrburbhlkvp";
int index=strstr(&s,"h")-&s;

para encontrar o índice 'h'na garble dado.

Respondeu 15/01/2018 em 14:18
fonte usuário

votos
0

Escreva o seu próprio :)

Código de uma biblioteca de processamento de strings BSD licenciado para C, chamado 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;
}
Respondeu 18/02/2016 em 23:49
fonte usuário

votos
0

Se você não está totalmente ligada à pura C e pode usar string.h há strchr () Veja aqui

Respondeu 07/08/2008 em 16:04
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more