En este ejercicio sobre programación en C vamos a ver cómo saber si una cadena está conformada únicamente por las letras del alfabeto, es decir:
Para ello nos vamos a valer únicamente de la función isalpha
y comprobaciones simples.
Vamos a encerrar todo esto en una función que devuelve un booleano emulado, es decir, un entero en donde el 1 es true
y el 0 false
.
En la función recorremos la cadena y obtenemos el carácter en cada paso. También hacemos dos comprobaciones:
isalpha
) o…En caso de que ambas condiciones se cumplan, inmediatamente detenemos la función y regresamos false
.
Por si terminamos el ciclo y no se terminó la función, entonces significa que hemos recorrido toda la cadena y cada carácter pasó la validación así que regresamos true
.
Así que el código fuente queda así:
int tieneUnicamenteLetrasDelAlfabeto(char cadena[]) {
int i = 0;
while (cadena[i]) {
// Si no es del alfabeto y no es un espacio regresamos false o 0
if (
!isalpha(cadena[i])
&& cadena[i] != ' '// El espacio cuenta como válido, si no, simplemente quita la condición
)
return 0;
i++;
}
// Si terminamos de recorrer la cadena y no encontramos errores, regresamos 1 o true
return 1;
}
Veamos el uso de la función para saber si cadena contiene únicamente letras del alfabeto en ANSI C.
En el método main
definimos una cadena y luego invocamos a la función definida anteriormente:
int main() {
// Esta tiene únicamente letras del alfabeto
char cadena1[] = "Me gusta programar en C";
if (tieneUnicamenteLetrasDelAlfabeto(cadena1)) {
printf("'%s' tiene únicamente del alfabeto\n", cadena1);
} else {
printf("'%s' NO tiene únicamente letras del alfabeto\n", cadena1);
}
// Esta no, porque tiene números
char cadena2[] = "No me gusta programar en Python 2";
if (tieneUnicamenteLetrasDelAlfabeto(cadena2)) {
printf("'%s' tiene únicamente del alfabeto\n", cadena2);
} else {
printf("'%s' NO tiene únicamente letras del alfabeto\n", cadena2);
}
// Esta no, porque tiene un .
char cadena3[] = "parzibyte.me";
// Recuerda que puedes almacenar el resultado
int resultado = tieneUnicamenteLetrasDelAlfabeto(cadena3);
if (resultado) {
printf("'%s' tiene únicamente letras del alfabeto\n", cadena3);
} else {
printf("'%s' NO tiene únicamente letras del alfabeto\n", cadena3);
}
return 0;
}
En este caso simplemente imprimo una cadena, pero puedes usar esto para cualquier otra cosa obteniendo el resultado.
Como ves, si tiene números o puntos, la validación indica que no está compuesta únicamente por letras del alfabeto.
El código completo de para Saber si cadena solo tiene letras de alfabeto en C queda así:
/**
* Saber si cadena tiene únicamente letras del alfabeto con C
*
* @author parzibyte
* https://parzibyte.me/blog
*
* */#include <stdio.h> // Para printf
#include <ctype.h> // Para isalpha
int tieneUnicamenteLetrasDelAlfabeto(char cadena[]) {
int i = 0;
while (cadena[i]) {
// Si no es del alfabeto y no es un espacio regresamos false o 0
if (
!isalpha(cadena[i])
&& cadena[i] != ' '// El espacio cuenta como válido, si no, simplemente quita la condición
)
return 0;
i++;
}
// Si terminamos de recorrer la cadena y no encontramos errores, regresamos 1 o true
return 1;
}
int main() {
// Esta tiene únicamente letras del alfabeto
char cadena1[] = "Me gusta programar en C";
if (tieneUnicamenteLetrasDelAlfabeto(cadena1)) {
printf("'%s' tiene únicamente del alfabeto\n", cadena1);
} else {
printf("'%s' NO tiene únicamente letras del alfabeto\n", cadena1);
}
// Esta no, porque tiene números
char cadena2[] = "No me gusta programar en Python 2";
if (tieneUnicamenteLetrasDelAlfabeto(cadena2)) {
printf("'%s' tiene únicamente del alfabeto\n", cadena2);
} else {
printf("'%s' NO tiene únicamente letras del alfabeto\n", cadena2);
}
// Esta no, porque tiene un .
char cadena3[] = "parzibyte.me";
// Recuerda que puedes almacenar el resultado
int resultado = tieneUnicamenteLetrasDelAlfabeto(cadena3);
if (resultado) {
printf("'%s' tiene únicamente letras del alfabeto\n", cadena3);
} else {
printf("'%s' NO tiene únicamente letras del alfabeto\n", cadena3);
}
return 0;
}
Por cierto, en el código he definido la cadena pero bien podría proporcionarla el usuario, la puedes leer con fgets.
¿Más tutoriales de C? click aquí.
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta semana estuve recreando la API del plugin para impresoras térmicas en Android (HTTP a…
Hoy te enseñaré a extraer la cadena base64 de una clave PEM usando una función…
Encender un foco con un Bot de Telegram es posible usando una tarjeta como la…
Esta web usa cookies.