Google

domingo, 30 de maio de 2010

Validando o formato do email informado

Nesse exemplo é passado como argumento um email e validado se não possui nenhuma restrição imposta para caracter inválido e formato.


#include < stdio.h >
#include < stdlib.h >
#include < unistd.h >
#include < string.h >
#include < ctype.h >

int caracter_invalido_email(char * email)
{
char * walker = NULL;
char *caracter = "#$%¨*()+=-/´`^~[]{}<>;;:?";
int i;
walker = email;
while ((walker != NULL) && (*walker != '\0'))
{
for(i = 0; *(caracter+i) != '\0'; i++){
if(*walker == *(caracter+i)){
printf("Caracter invalido encontrado %c\n", *(caracter+i));

return -1;
}
}

walker++;
}

return 0;
}




void consist_email(char * email)
{
char *walker = NULL;
int size;
int found_at;
int found_dot;
int found_last_dot=0;

found_at = found_dot = -1;
size = 0;

printf("Iniciando a função \n\n");
walker = email;
printf("Posicao do Ptr %c \n\n",*walker);

printf("Walker %s \n\n", walker);
while ((walker != NULL) && (*walker != '\0'))
{
printf("Entrando no while %c \n\n",*walker);
if (*walker == '@')
{
/* Search for @ */
printf("Iniciando walker==@ \n");
if (found_at == -1)
{
printf("Iniciando walker==@ found at==-1 \n");
found_at = 0;
}else{
/* only one @ */
printf(" ERRO MAIS DE UM @ \n");
return;
}
if(*(walker+1)== '.'){
printf("ERRO . after @ \n");
return;
}
if(*(walker-1)== '.'){
printf("ERRO . before @ \n");
return;
}

}
if (*walker == '.')
{
if(*(walker+1)== '.'){
printf("ERRO . after . \n");
return;
}
if(*(walker-1)== '.'){
printf("ERRO . before . \n");
return;
}

}
if (*walker == ' ') {
/* no space allowed */
printf("ERRO NENHUM ESPAÇO É PERMITIDO\n");
return;
}


/*Não pode letra maiúscula*/
if (isupper(*walker))
{
printf("upper case letter not allowed\n\n");
return;
}
found_last_dot = 0;
if(*walker == '.')
{
found_last_dot = 1;
}

size++;
walker++;
}


if(found_last_dot == 1)
{
printf("Erro email terminando com .\n\n");
}

return;
}



int main(int argc, char *argv[]){

printf("argv %s\n",argv[1]);

char *email = NULL;
int i = 0;
email = malloc(30);
strcpy(email,argv[1]);

printf("Email %s\n", email);
printf("Email %c\n", *email);

for(i = 0; *(email+i) != '\0'; i++){
printf("Email %c\n", *(email+i));
}
int cond;
cond = caracter_invalido_email(email);
if(cond == -1)
return -1;

consist_email(email);



printf("Email %s\n", email);

free(email);

return 1;
}

Postagens populares