[C con Clase] Expresiones Regulares en C

pogui poguijuaz en gmail.com
Jue Dic 17 23:46:35 CET 2009


El problema es que te estas haciendo bucles que pueden no tener fin, 
solo estas considerando el caso de que el puntero qeu te pasan siempre 
contiene un mail.
Por ejempo:

if ( palabra[i] == '@' )
		i++;

que pasa si nunca te mandan una "@" en la cadena? bucle sin condición de 
salida.
Tendrías que usar la fc strlen() para saber cuando termina, por ejemplo 
en la sentencia anterior:

if ( palabra[i] == '@' && i <= strlen(palabra))
		i++;

Tendrias que hacer lo mismo en todos los bucles, esto es algo bueno por 
donde empezar, fijate esto, sino te sigo ayudando :D

Juan Pedro Mermoz escribió:
> Hola! Antes que nada quiero agradecer toda la ayuda que obtuve de esta pagina! La verdad que todo salio de 10, asi que gracias :)
>
> Quería saber si alguien me puede guiar un poco para hacer una "expresion regular" para validar cuando el usuario ingresa un correo electronico.
>
> Tengo una vaga idea de como hacer, utilizando sentencias while e if.. pero estoy medio perdido.
>
> int scanner (char *palabra)
> {
> 	int i=0;
> 	
> 	while ( isalpha (palabra[i]) || isdigit (palabra[i]) )
> 		i++;
> 		
> 	if ( palabra[i] == '@' )
> 		i++;
> 		
> 	while ( isalpha (palabra[i]) || isdigit (palabra[i]) )
> 		i++;
> 		
> 	if ( palabra[i] == '.' )
> 		i++;	
> 	
> 	while ( isalpha (palabra[i]) )
> 		i++;	
> 	
> 	if (strlen(palabra) == i)
> 		return 1;
> 	
> 	return 0;
> }
>
> Esto es más o menos lo que hice, no funciona como deberia, pero la idea seria que primeramente el usuario pueda ingresar cualquier caracter o digito, despues un arroba, despues mas digitos o caracteres, después un punto, y despues mas caracteres..
>
> Espero que puedan guiarme un poco!
> Gracias saludos!
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
>   





Más información sobre la lista de distribución Cconclase