Existe-t-il une fonction dans c qui renvoie l’index d’un caractère dans un tableau de caractères?

Existe-t-il une fonction dans c qui renvoie l’index d’un caractère dans un tableau de caractères?

Par exemple, quelque chose comme:

char values[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char find = 'E'; int index = findInedexOf( values, find ); 

strchr renvoie le pointeur sur la première occurrence. Pour trouver l’index, il suffit de prendre l’offset avec le pointeur de départ. Par exemple:

 char values[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char find = 'E'; const char *ptr = strchr(values, find); if(ptr) { int index = ptr - values; // do something } 
 int index = strchr(values,find)-values; 

Notez que si aucune find n’est trouvée, alors strchr renvoie la NULL , l’index sera donc négatif.

Il y a aussi size_t strcspn(const char *str, const char *set) ; il retourne l’index de la première occurrence du caractère dans s inclus dans set :

 size_t index = strcspn(values, "E"); 

index_of() sûre qui fonctionne même quand elle ne trouve rien (retourne -1 dans ce cas).

 #include  #include  ptrdiff_t index_of(const char *ssortingng, char search) { const char *moved_ssortingng = strchr(ssortingng, search); /* If not null, return the difference. */ if (moved_ssortingng) { return moved_ssortingng - ssortingng; } /* Character not found. */ return -1; } 

Qu’en est-il des strpos?

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

Notez que strpos attend une chaîne terminée par zéro, ce qui signifie que vous devez append un “\ 0” à la fin. Si vous ne pouvez pas faire cela, vous vous retrouvez avec une boucle manuelle et une recherche.

Vous pouvez utiliser strchr pour obtenir un pointeur sur la première occurrence et le soustraire (si non nul) du caractère * d’origine pour obtenir la position.