Est-il une fonction en c qui retourne l'indice d'un caractère dans un tableau de char?
Est-il une fonction en c qui retourne l'indice d'un caractère dans un tableau de char?
Par exemple quelque chose comme:
char values[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char find = 'E';
int index = findInedexOf( values, find );
6 réponses
strchr
renvoie le pointeur à la première occurrence, donc 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 s'il n'y a pas de find
trouvé strchr
retourne NULL
, donc l'indice sera négatif.
Il y a aussi size_t strcspn(const char *str, const char *set)
; il renvoie l'index de la première occurrence du caractère dans s
qui est inclus dans set
:
size_t index = strcspn(values, "E");
Sûr index_of()
fonction qui fonctionne même quand il ne trouve rien (retourne -1
dans ce cas).
#include <stddef.h>
#include <string.h>
ptrdiff_t index_of(const char *string, char search) {
const char *moved_string = strchr(string, search);
/* If not null, return the difference. */
if (moved_string) {
return moved_string - string;
}
/* Character not found. */
return -1;
}
Qu'en strpos?
#include <string.h>
int index;
...
index = strpos(values, find);
notez que strpos s'attend à une chaîne à fin zéro, ce qui signifie que vous devez ajouter un '\0' à la fin. Si vous ne pouvez pas faire cela, il vous reste une boucle manuelle et la recherche.