<div>Para el formato que elegiste, <caracteres alfanumericos ++ '@' ++ caracteres alfanumericos ++ '.' ++ caracteres alfanumericos>, te podría servir:<br></div><div><br></div><div>CV es una macro que se fija si el caracter es alfanumerico, se puede cambiar por isdigit() o cualquier otro</div>

<div><br></div><div><font face="courier new,monospace">#define CV(x) (((x)>='a' && (x)<='z') || ((x)>='0' && (x)<='9'))</font><br></div><div><font face="courier new,monospace"><br>

</font></div><div><font face="courier new,monospace">int valida(char *a)<div>{</div><div style="margin-left: 40px">        char *p = a;</div><div style="margin-left: 40px">while(CV(*a)) a++;                  /* avanzo mientras sean alfanum */</div>

<div style="margin-left: 40px">if(*(a++) != '@') return 0;         /* si no hay punto no es cadena valida */</div><div style="margin-left: 40px">        while(CV(*a)) a++;</div><div style="margin-left: 40px">        if(*(a++) != '.') return 0;</div>

<div style="margin-left: 40px">        while(CV(*a)) a++;</div><div style="margin-left: 40px">if(*a) return 0;                    /* si hay mas caracteres en la cadena no son alfanum asi que la cadena no es valida */</div>

<div style="margin-left: 40px">        return 1;</div><div>}</div></font><br>Para cadenas un poco distintas, por ejemplo direcciones con subdominios, es muy parecido, solo habría que agregar un while que contenga a la parte que verifica hasta llegar al punto.<br>

</div><div><br></div><div>Saludos</div><div><br></div><div class="gmail_quote">El 17 de diciembre de 2009 17:56, Juan Pedro Mermoz <span dir="ltr"><<a href="mailto:jpmermoz@hotmail.com">jpmermoz@hotmail.com</a>></span> escribió:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hola! Antes que nada quiero agradecer toda la ayuda que obtuve de esta pagina! La verdad que todo salio de 10, asi que gracias :)<br>


<br>
Quería saber si alguien me puede guiar un poco para hacer una "expresion regular" para validar cuando el usuario ingresa un correo electronico.<br>
<br>
Tengo una vaga idea de como hacer, utilizando sentencias while e if.. pero estoy medio perdido.<br>
<br>
int scanner (char *palabra)<br>
{<br>
        int i=0;<br>
<br>
        while ( isalpha (palabra[i]) || isdigit (palabra[i]) )<br>
                i++;<br>
<br>
        if ( palabra[i] == '@' )<br>
                i++;<br>
<br>
        while ( isalpha (palabra[i]) || isdigit (palabra[i]) )<br>
                i++;<br>
<br>
        if ( palabra[i] == '.' )<br>
                i++;<br>
<br>
        while ( isalpha (palabra[i]) )<br>
                i++;<br>
<br>
        if (strlen(palabra) == i)<br>
                return 1;<br>
<br>
        return 0;<br>
}<br>
<br>
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..<br>


<br>
Espero que puedan guiarme un poco!<br>
Gracias saludos!<br>
_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
</blockquote></div><br>