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.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.