usar resueltos matriz leer funciones ejercicios ejemplos como caracteres cadenas cadena arreglos arreglo c indexing strchr

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.