Ir ao conteúdo

Posts recomendados

Postado

Boa noite,

 

Estou de momento a desenvolver um programa, que tem como objetivo, através da seleção num menu:

1- Inserir nova password 2- Recuperar password, dado o email do utilizador 3- Verificar segurança das passwords 4- Sair

Tenho tido agora dificuldades na segunda opcao...

Tem como objetivo, através do pedido ao utilizador o seu email (armazenado num ficheiro .txt) exibir a sua palavre-pass. Ja realizei o strcmp(comparação de string para confirmar se o email existe devidamente ou não, e agora tinha como objetivo afixar no monitor a password que se situa a seguir no ficheiro .txt.

No ficheiro os dados são aramzenados da segunda maneira:

[email protected] pass1!#$PASS 
[email protected] passwordcerta!#$5 
[email protected] lllllll 

Ou seja um espaço após cada email e um '\n' após cada palavra pass...

Pensei em usar vetores, mas deixou-me bastante confuso agora como realizar...

irei por para ja a parte mais relevante do codigo para isso( que ja escrevi):

case 2: printf ("Para recuperar a sua password segue os seguintes passos:\n 1-Insira seu email:");
            scanf("%s", email);
             i=0;
             existe=0;
                f=fopen("mail-e-pass.txt", "r");
                 if(f==NULL){
                     printf("Erro ao abrir ficheiro \n");
                    exit(1);
                   }
                while(fscanf(f, "%s",emailteste)!=EOF){
                
                   i++;
                  
                   if(i%2!=0){
                   
                    z=strcmp(emailteste, email);
                    
                    if (z==0){
                     printf("seu email existe");
                     
                     existe=1;
        }
    }
    }
     if (existe==0){
                  printf("Este email nao existe.\n");
              }  
    sleep(2);
    fclose(f);
            break;

o código por si inteiro é muito extenso, mas se for preciso, irei aqui postar :)

Agradeço desde de já qualquer ajuda que possam dispor!

Obrigado!

 

Cumprimentos,

Florian Martins.

Postado

Olá @Florian Martins

Observei que a lógica está funcionado.

Fiz alguns modificações para encaixar no main.

busca_email.c

#include <stdio.h>  //printf, scanf, fscanf, "strcmp",
#include <stdlib.h> //exit, system.
int main() {

    FILE *f;
    char email[]={"[email protected]"},//Exemplo de formato de tamanho:= 27.
         emailteste[sizeof email],
         existe,
         z;

    printf("Para recuperar a sua password segue os seguintes passos:\n 1-Insira seu email: ");
    scanf("%27s", email);//27 e tamanho máximo do nosso exemplo.

    existe=0;//Var_char que contém a resposta da comparação e-mail a e-mail.
    f=fopen("mail-e-pass.txt", "r");//Var_ f contém ponto para file aberto ou NULL
    if(f==NULL) {
        printf("Erro ao abrir ficheiro \n");
        exit(1);
        }
   //!<CONCLUSÃO>
   //*Pelo formato do input no file: podemos concluir que a cada e-mail vem logo após
   //*sua respectiva senha de maneira que; se o e-mail buscado não for o input certo
   //*então se deve pular o próximo input pois esse é a senha do e-mail anterior errado.
   while(fscanf(f, "%s",emailteste)!=EOF) {//Busca até o Fim do Arquivo ou finaliza antes.

            z=strcmp(emailteste, email);//Comparando se somente 0- são iguais.

            if(z==0) {
                printf("seu email existe\n");

                existe=1;
                }
            else fscanf(f, "%*s");//Caso o email não exista então pular senha fail.
        }
   if(existe==0) {
        printf("Este email nao existe.\n");
        }
   //!<CONCLUSÃO\>
    fclose(f);
    system("PAUSE"); //Cria uma parada no prompt Microsoft Windows.
    return 0;
    }

 

Postado

@Mauro Britivaldo

Agradeço desde de ja pela ajuda! :D Agora com essas alterações, chega ao ponto de buscar a string que esta a seguir este eamil, essa parte é que me deixa confuso, pensei em usar ponteiros, mas infelizmente ainda não estudei os ponteiros(conheço por busca e cultura né )... Como posso eu por no monitor agora a string que se segue depois do ' ' e antes do '\n' ?

Postado
3 minutos atrás, Florian Martins disse:

Como posso eu por no monitor agora a string que se segue depois do ' ' e antes do '\n' ?

Essa string seria a senha do e-mail. Observou que quando a busca resulta em SUCESSO.

A senha é imediatamente a próximo input segundo a estrutura do arquivo, portanto, basta repetir o fscanf-string só para pegar a senha.

E Pronto!

Postado

@Mauro Britivaldo Hummmmmm isso parece-me bem certo!! Não tinha pensado assim! Mas se por exemplo o utilizador der o email que esta na segunda posição,ira ler a primeira password ou a password a seguir o email?

Mas seguindo assim devo de conseguir! Muuuuiiiittooooo Obrigado sério! Fico agradecido!

Postado
2 minutos atrás, Florian Martins disse:

Mas se por exemplo o utilizador der o email que esta na segunda posição,ira ler a primeira password ou a password a seguir o email?

Um vez que o e-mail seja o correto, segundo a estrutura do arquivo, o próximo string será a senha do respectivo e-mail. Fatalmente. :thumbsup:

Por nada!  

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!