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í.
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.