Anteriormente en mi blog te enseñé cómo saber si una cadena en C contiene una subcadena. Ahora te mostraré cómo saber el índice (es decir, la posición) en donde aparece la subcadena dentro de la cadena.
Para esto vamos a usar strstr y operaciones con punteros.
Buscando cadena en subcadena
En mi tutorial anterior sobre ANSI C usamos strstr
, misma que devuelve un apuntador a la cadena. Entonces primero debemos comprobar si se devuelve un puntero que no es NULL
y en caso de ser así, vamos a hacer una resta para obtener el índice.
Obtener índice de subcadena en cadena usando C
Vamos al grano. El código queda así:
En la línea 11 obtenemos el posible apuntador a la subcadena que estamos buscando dentro de la cadena.
En caso de que lo encontremos, hacemos operaciones con los punteros en la línea 14 para saber la posición de la subcadena en la cadena.
Finalmente en cualquiera de los dos casos imprimimos los resultados. En mi caso lo ejecuté y la salida fue la siguiente:
Ya con este índice podemos cortar la cadena, recorrerla desde ahí, etcétera. Puedes probar el código en línea.
También te invito a leer más sobre programación en C dentro de mi blog.