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

Explicación del algoritmo

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.

Saber si string es alfanumérica en C

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.

Poniendo todo junto

Saber si cadena es alfanumérica en C (tiene una letra y un número)

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.

Si el post ha sido de tu agrado te invito a que me sigas para saber cuando haya escrito un nuevo post, haya actualizado algún sistema o publicado un nuevo software. Facebook | X | Instagram | Telegram | También estoy a tus órdenes para cualquier contratación en mi página de contacto