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;
}
Nenhum comentário:
Postar um comentário