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