Posición de carácter (letra) en cadena de C

En este corto post de programación en C vamos a ver cómo encontrar el índice y último índice de un carácter en C, o dicho de otra manera, la primera y última aparición de una letra en una cadena de C.

Ya sabemos que en C no existen las cadenas como tal y que tenemos arreglos de caracteres, pero aquí llamaremos “cadenas” o “strings” a esos arrays de tipo char.

Entonces veamos cómo saber la primera y última aparición de un char en una cadena de C.

Explicación del algoritmo

Para saber en cuál posición se encuentra un carácter dentro de una cadena de C simplemente recorremos la cadena desde el 0 hasta la longitud de la misma menos 1, y comprobamos si el char actual es el que buscamos.

Si es que encontramos el carácter entonces devolvemos el índice (y dejamos de recorrer la cadena) o posición en donde lo encontramos.

Por otro lado, si queremos saber la última aparición hacemos lo mismo pero ahora recorremos desde el final hacia el principio.

Primer ocurrencia de carácter en cadena usando C

El código para encontrar el primer índice que coincide con el carácter buscado en una cadena es el siguiente:

En caso de que la letra no se encuentre dentro de la cadena entonces la función devolverá un -1 (lo mismo aplica para la función de C que devuelve la última posición de un carácter dentro de una cadena).

Última ocurrencia de carácter en cadena de C

Ahora veamos cómo saber la última posición o índice de una letra dentro de un string de C. Como lo dije, ahora vamos desde el final al inicio.

En este caso estoy usando strlen para calcular la longitud de la cadena, pero podemos calcular la longitud manualmente si así se requiere.

Poniendo todo junto

Ahora veamos un ejemplo y el código completo. En este caso simplemente voy a imprimir las posiciones en donde la letra aparece por primera vez y en donde aparece por última vez.

Ahora compilo con:

gcc ocurrencias.c -o ocurrencias.exe

Y ejecuto con:

./ocurrencias.exe

La salida es:

1 y 13

Cosa que es correcta, ya que la primer ocurrencia de la letra es en la segunda posición (índice 1, ya que se cuenta desde el cero) y la última es en el índice 13.

Aunque no se vea al principio, estas funciones nos van a servir para varias cosas, por ejemplo para saber si una letra solo se encuentra una sola vez dentro de la cadena (ya que si el primer y último índice son los mismos entonces el char solo se encuentra una vez).

Para terminar te dejo con más tutoriales de C en mi blog.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario