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.
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.
El código para encontrar el primer índice que coincide con el carácter buscado en una cadena es el siguiente:
int indiceDeCaracterEnCadena(char *cadena, char caracter)
{
int indice = 0;
while (cadena[indice] != '\0')
{
char actual = cadena[indice];
if (actual == caracter)
{
return indice;
}
indice++;
}
return -1;
}
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).
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.
int ultimoIndiceDeCaracterEnCadena(char *cadena, char caracter)
{
int indice = strlen(cadena) - 1;
while (indice >= 0)
{
char actual = cadena[indice];
if (actual == caracter)
{
return indice;
}
indice--;
}
return -1;
}
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.
#include <stdio.h>
#include <string.h>
int indiceDeCaracterEnCadena(char *cadena, char caracter)
{
int indice = 0;
while (cadena[indice] != '\0')
{
char actual = cadena[indice];
if (actual == caracter)
{
return indice;
}
indice++;
}
return -1;
}
int ultimoIndiceDeCaracterEnCadena(char *cadena, char caracter)
{
int indice = strlen(cadena) - 1;
while (indice >= 0)
{
char actual = cadena[indice];
if (actual == caracter)
{
return indice;
}
indice--;
}
return -1;
}
int main()
{
char cadena[] = "Hola, me llamo Parzibyte";
char busqueda = 'o';
printf("%d y %d", indiceDeCaracterEnCadena(cadena, busqueda), ultimoIndiceDeCaracterEnCadena(cadena, busqueda));
}
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.
El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…
Esta web usa cookies.