Saber si cadena es alfanumérica en C (tiene una letra y un número)
En este post de programación en C vamos a ver cómo comprobar si una cadena tiene al menos un número y una letra (puede servir para validar una contraseña).
Básicamente veremos si la cadena es alfanumérica regresando un resultado falso o verdadero en una función. Todo esto en lenguaje C que también sirve en C++.
Lo que haremos primero será establecer dos banderas. Una indicará si se encontró una letra, y otra indicará si se encontró un número.
Luego vamos a recorrer la cadena letra por letra, comprobar si es número o letra y cambiar las banderas booleanas previamente definidas.
Al terminar de iterar la string vamos a comprobar si ambas banderas fueron establecidas en true
(o en 1, ya que en C los booleanos no están estandarizados) para indicar que la cadena es o no es alfanumérica.
Nota: podemos usar isalpha
para saber si un carácter está en el alfabeto, y podemos usar isdigit
para saber si un carácter es un número. Estas funciones están definidas en ctype
.
Vayamos al código para comprobar si una cadena en C es alfanumérica. He encerrado el comportamiento en una función y queda así:
int esAlfanumerica(char *cadena)
{
int i;
int tieneLetra = 0;
int tieneNumero = 0;
for (i = 0; i < strlen(cadena); i++)
{
char letra = cadena[i];
if (isalpha(letra))
{
tieneLetra = 1;
}
if (isdigit(letra))
{
tieneNumero = 1;
}
}
return tieneLetra && tieneNumero;
}
Nota: si tú no puedes usar strlen revisa el post que te dejé anteriormente en donde indico cómo recorrer una cadena sin esa función.
Anteriormente te mostré la función para saber si una cadena de C es alfanumérica o mejor dicho saber si una string tiene al menos una letra y un número.
A continuación veamos cómo usar esa función:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int esAlfanumerica(char *cadena)
{
int i;
int tieneLetra = 0;
int tieneNumero = 0;
for (i = 0; i < strlen(cadena); i++)
{
char letra = cadena[i];
if (isalpha(letra))
{
tieneLetra = 1;
}
if (isdigit(letra))
{
tieneNumero = 1;
}
}
return tieneLetra && tieneNumero;
}
int main()
{
// https://parzibyte.me/blog
char cadena[] = "Parzibyte 123";
if (esAlfanumerica(cadena))
{
printf("Es alfanumerica\n");
}
else
{
printf("No es alfanumerica\n");
}
}
Recuerda que la misma solo te regresará true
si es que la cadena que le envías tiene al menos una letra y un número.
Para terminar te dejo con más tutoriales de C en mi blog.
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.