Check if typed string is in e-mail format

0

Well, I need some help to check if the typed email ends in "@ usp.br".

Here is the code I've tried:

/* pega o tamanho total do email digitado */
int tamanho = strlen(email);
/* a partir do tamanho do email, comece a contar nos ultimos 7 caracteres -> que deve terminar em "@usp.br" */
int ultimos = email[tamanho-7]; /* -> se o email tiver 20 caracteres, comece do indice 13 */

char verifica[7] = "@usp.br";
int k=0;

for(i=0; i < 7; i++){
    /* exemplo */
    /* comece a comparar no indice 13, que deve conter a letra "@" */
    if(email[tamanho-7] == verifica[k]){
        k++;
        continue;
    }
    else{
        printf("Email digitado incorreto! Digite um email que termine com '@usp.br'!");
    }
    //k++;
}
    
asked by anonymous 03.09.2017 / 02:57

1 answer

1

I did it this way:

int emailusp(const char *email) {

    /* Pega o tamanho total do e-mail digitado. */
    int tamanho = strlen(email);

    /* Se for muito curto, cai fora retornando 0. */
    if (tamanho < 7) return 0;

    const char verifica[7] = "@usp.br";

    /* Verifica se cada um dos últimos caracteres é "@usp.br". Se encontrar um que não é, retorna 0. */
    int i;
    for (i = 0; i < 7; i++) {
        if (email[tamanho - 7 + i] != verifica[i]) return 0;
    }

    /* Os os últimos caracteres são "@usp.br". Retorna 1. */
    return 1;
}

void testar(const char *email) {
    int valido = emailusp(email);
    printf("%s%s eh um e-mail da USP.\n", email, valido ? "" : " nao");
}

int main() {
   testar("[email protected]");
   testar("[email protected]");
   testar("[email protected]");
   testar("[email protected]");
   testar("a@a");
}

Here's the output:

[email protected] eh um e-mail da USP.
[email protected] eh um e-mail da USP.
[email protected] nao eh um e-mail da USP.
[email protected] nao eh um e-mail da USP.
a@a nao eh um e-mail da USP.

See here working on ideone.

    
03.09.2017 / 03:35