Fonction Ssortingng.indexOf en C

Existe-t-il une fonction de bibliothèque C qui renvoie l’index d’un caractère dans une chaîne?

Jusqu’à présent, tout ce que j’ai trouvé, ce sont des fonctions comme strstr qui renverront le caractère trouvé *, et non son emplacement dans la chaîne d’origine.

je pense que

size_t strcspn (const char * str1, const char * str2);

est ce que tu veux Voici un exemple tiré d’ ici :

/* strcspn example */ #include  #include  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; } 

strstr renvoie un pointeur sur le caractère trouvé, vous pouvez donc utiliser l’arithmétique du pointeur: (Remarque: ce code n’a pas été testé pour sa capacité à comstackr, c’est à un pas du pseudocode.)

 char * source = "test ssortingng"; /* 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" */ } 

EDIT: strchr vaut mieux que pour un caractère. Pointer aritmetics dit “Hellow!”:

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

Important: strchr () renvoie NULL si aucune chaîne n’est trouvée

Vous pouvez utiliser strstr pour accomplir ce que vous voulez. Exemple:

 char *a = "Hello World!"; char *b = strstr(a, "World"); int position = b - a; printf("the offset is %i\n", position); 

Cela produit le résultat:

 the offset is 6 

Si vous n’êtes pas totalement lié au C pur et pouvez utiliser ssortingng.h, il y a strchr () Voir ici

Écrivez votre propre 🙂

Code d’une bibliothèque de traitement de chaînes sous licence BSD pour C, appelée zSsortingng

https://github.com/fnoyanisi/zSsortingng

 int zssortingng_search_chr(char *token,char s){ if (!token || s=='\0') return 0; for (;*token; token++) if (*token == s) return 1; return 0; } 

Tu peux écrire

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

trouver l’indice de 'h' dans le garble donné.