Correo electrónico de programación en línea
# incluir & ltstring.h & gt
int? Comprobación de formato (char?*);
Char? *?SplitByAt(char?*?, int);
Char? *?CharsCheck(char?*);
#Definición? ¿norte? 1024
int? Señor()
{
¿Ciel? cadena[N], * campo
memset(cadena, 0x00, N);
scanf("%s ", cadena
campo=SplitByAt); (cadena, N);
if(field==NULL)
{
printf(" NO \ n ");
¿Regresar? -1;
}
¿Y si? if(verificación de formato(str)& & verificación de formato(campo))
{
printf(" YES \ n ");
¿Regresión? 0;
}
Otro
{
printf(" NO \ n ");
Regresar ? -1;
}
}
/**
* Verifique el formato del dominio/correo electrónico.
*/
int? Comprobación de formato (char? *str)
{
Char? * p;
for(;;)
{
p = caracteres comprobar(str);
if(p== str)
{
¿Volver? 0;
}
¿Y si? if(*p=='\0 ')
{
¿Regresión? 1;
}
¿Y si? if(*p!='.')
{
¿Devolver? 0;
}
p++;
str = p;
}
}?
/**
* Compruebe si @ se puede dividir en dos segmentos y devuelve la primera dirección del nombre de dominio. Si no, devuelve NULL.
*Parámetros: cadena, cadena fuente, longitud, límite de longitud (anticross)
*Esta función reemplazará el primer ' en la cadena fuente con '\0' @ ', el La dirección de correo electrónico y el nombre de dominio se han dividido.
*/
¿Ciel? *SplitByAt(char? *str, int? length)
{
Char? *p=strchr(str,'@');
if (p!= NULL &&(p-str)<longitud)
{
* p = 0;
p++;
¿Regresión? p;
}
¿Volver? NULL
}
/**
*Comprueba si str es continua'a'-'z','A'-'Z',' 0 '-'9' caracteres.
*Valor de retorno: la posición del primer carácter insatisfactorio.
*Por ejemplo: str="abc ", devuelve str+3;? Str="a#bc ", devuelve str+1;
*/
¿Carácter? *?CharsCheck(char?*str)
{
while((* str & gt;= ' a ' & amp& amp* str & lt='z')||
(* str & gt= ' A ' & amp& amp* str & lt='Z')||
(* str & gt= ' 0 ' & amp& amp* str & lt='9')||
*str=='_ ')
{
str++;
}
¿Volver? La solicitud str
} no menciona las reglas especiales para el símbolo ' _ ', por lo que el correo electrónico prefiere "_ _". _ _ @ _" también se puede verificar.