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

C – Saber si cadena es alfanumérica

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

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *