Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- struct LOGIN{
- /*Esta estrutura recebe nome de usuário e senha, e armazena em vetor de char de até 8 caracteres*/
- char nome[9];
- char senha[9];
- };
- typedef struct LOGIN login;/*Define o tipo da struct como tipo login*/
- void main(){/*Função void,não precisa retornar valor*/
- int i=0,k=0,flag=0,temp=0;/*i-contador de laço,k-contador de laço,flag-verificador de letras,temp-armazenar flag */
- login cadastro[3];/*Recebe 10 variáveis tipo login*/
- char verificacao[9];/*Variável para verificar se o nome digitado está cadastrado*/
- char verificacao_senha[9];/*Variável para verificar se senha digitada para usuário i é correta ou não*/
- int flag_cadastro=0;/*Flag para verificar se nome digitado é igual a algum nome da lista de cadastros*/
- int flag_cadastro_senha=0;/*Flag para verificar se senha é igual à senha do cadastro respectivo, depois desse cadastro
- ter sido encontrado*/
- for(i=0;i<3;i++){/*Laço de recebimento de estruturas de cadastro*/
- fflush(stdin);/*Limpar buffer a cada renovação de laço*/
- printf("Entre com o nome do usuario %d\n",i+1);
- gets(cadastro[i].nome);/*Recebe nome 1*/
- printf("Entre com sua senha. Apenas sao permitidos letras ou numeros:\n");
- /*Ativar do while para repetir laço até o usuário entrar com uma senha válida*/
- do{
- fflush(stdin);
- scanf("%s",&cadastro[i].senha);
- /*puts(cadastro[i].senha);*/
- for(k=0;k<strlen(cadastro[i].senha);k++){/*Isso vai verificar cada caractere da variável senha do cadastro i. A
- variável flag vai incrementando para cada caractere dentro das especificações. Se essa senha tiver algum
- caractere fora das especificações, a flag não incrementa*/
- if((cadastro[i].senha[k]>=48&&cadastro[i].senha[k]<=57)||(cadastro[i].senha[k]>=65&&cadastro[i].senha[k]<=90)||(cadastro[i].senha[k]>=97&&cadastro[i].senha[k]<=122)){
- ++flag;
- temp=flag;/*Armazena temporariamente essa flag, pois a flag precisa ser renovada para cada nova senha de
- um novo usuário i+1*/
- }
- }
- flag=0;/*A flag precisa ser zerada para poder entrar novamente no laço de verificação*/
- /*printf("TEMP %d FLAG %d STRLEN %d",temp,flag,strlen(cadastro[i].senha));*/
- if(temp!=strlen(cadastro[i].senha)){/*Se temp for diferente do tamanho da senha do usuário i,isso significa que
- a senha contém caracteres inválidos*/
- printf("A senha pode conter apenas letras ou numeros. Digite uma nova senha:\n");
- }
- else
- continue;/*Se estiver tudo certo, continua o recebimento de usuários e senhas*/
- }
- while(temp!=strlen(cadastro[i].senha));
- }
- fflush(stdin);
- /*Depois da verificação de cada usuário, hora de testar login e senha*/
- printf("%c%c%c - TESTE DE USUARIO - %c%c%c\n",178,178,178,178,178,178);
- printf("\n");
- printf("Entre com o nome do usuario:\n");
- gets(verificacao);/*Variável armazena string teste para comparação com os cadastros armazenados na estrutura*/
- for(i=0;i<3;i++){/*O laço verificará todos os cadastros da estrutura, um a um*/
- if(strcmp((cadastro[i].nome),verificacao)==0)/*Usando strcmp, comparamos cada nome de usuário ao nome teste digitado.
- Se o nome do usuário i for igual ao nome da verificação, a variável flag_cadastro é incrementada.*/
- /*Caso o nome i seja igual à verificação de login, isso retorna um 0, caso contrário, retorna 1*/
- /*printf("%d",strcmp((cadastro[i].nome),verificacao));*/
- ++flag_cadastro;
- }
- if(flag_cadastro==0){/*Caso a variável tenha sido incrementada, significa que ela é diferente de zero, e significa também
- que o nome teste de verificação está contido na estrutura de cadastros. Mas se ela for igual a zero, esse nome não
- está contido, ou seja, cadastro não encontrado e impede a próxima verificação*/
- printf("USUARIO NAO ENCONTRADO\n");
- system("break");
- }
- else/*Caso contrário, o nome foi encontrado, agora verifica se a senha correspondente a esse nome é correta*/
- printf("Entre com a senha do usuario:\n");
- gets(verificacao_senha);/*Pega uma string de verificação da senha*/
- for(i=0;i<3;i++){/*Laço de varredura de cada nome para verificar se a senha corresponde ao nome e se é correta*/
- if(strcmp((cadastro[i].senha),verificacao_senha)==0)/*Mesma lógica usada anteriormente*/
- ++flag_cadastro_senha;
- }
- if(flag_cadastro!=0&&flag_cadastro_senha!=0)/*Se a flag de cadastro for correta e a flag da senha for correta, ambas
- as flags se correspondem, e sena será correta.*/
- printf("USUARIO ENCONTRADO - SENHA CORRETA\n");
- else if(flag_cadastro!=0&&flag_cadastro_senha==0)/*Se a flag de cadastro for correta e a flag de senha for incorreta,
- o usuário foi encontrado, mas a senha não corresponde*/
- printf("USUARIO ENCONTRADO - SENHA INCORRETA\n");
- puts("\n");
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement