Check if typed string is in email format

Asked

Viewed 189 times

0

Guys, I need a little help to check if the email you typed ends with "@usp.br".

Here’s 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++;
}
  • 1

    This code doesn’t make any sense, and I doubt it will even do anything close to what you want. Anyway, I did not see a doubt there, just a request for help that is not in the scope of the site. Try to improve this so we can help.

  • 1

    Wouldn’t it be easier to do if (strcmp(email+(strlen(email)-7), "@usp.br") == 0) ? Ensuring it is at least 7 characters clear

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 way out:

[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.

  • Thank you very much Victor, it was very helpful.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.