resueltos - ¿Cómo encuentro el índice de un personaje dentro de una cadena en C?
leer cadena de caracteres en c (4)
Supongamos que tengo una cadena "qwerty"
y deseo encontrar la posición del índice del carácter e
en ella. (En este caso, el índice sería 2
)
¿Cómo lo hago en C?
Encontré la función strchr
pero devuelve un puntero a un carácter y no al índice.
Qué pasa:
char *string = "qwerty";
char *e = string;
int idx = 0;
while (*e++ != ''e'') idx++;
copiando a e para preservar la cadena original, supongo que si no te importa podrías operar con * cadena
Simplemente reste la dirección de la cadena de lo que strchr devuelve:
char *string = "qwerty";
char *e;
int index;
e = strchr(string, ''e'');
index = (int)(e - string);
También puede usar strcspn(string, "e")
pero esto puede ser mucho más lento ya que puede manejar la búsqueda de múltiples caracteres posibles. Usar strchr
y restar el puntero es la mejor manera.
void myFunc(char* str, char c)
{
char* ptr;
int index;
ptr = strchr(str, c);
if (ptr == NULL)
{
printf("Character not found/n");
return;
}
index = ptr - str;
printf("The index is %d/n", index);
ASSERT(str[index] == c); // Verify that the character at index is the one we want.
}
Este código no está probado actualmente, pero demuestra el concepto adecuado.