Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Thyago Buch

Comparar Login em C

Recommended Posts

Olá, eu preciso criar um Jogo da Velha em C, o jogo precisa ter como se cadastrar e depois realizar login, a parte de se cadastrar eu consegui fazer:

void cadastro(){
    FILE *nome;
    nome = fopen("nomes.txt","a")   ;
    FILE *endereco;
    endereco = fopen("endereco.txt","a");
    FILE *senha;
    senha = fopen("senha.txt","a");


        printf("Digite seu nome:");
        scanf("%s",&login);
        fprintf(nome,login);
        fprintf(nome,"\n");
        fclose(nome);
        printf("\n");
        printf("Digite uma Senha:");
        scanf("%s",&pass);
        fprintf(senha,pass);
        fprintf(senha,"\n");
        fclose(senha);
}

 

O problema é na hora do Login, eu só consigo comparar com a primeira linha do TXT:

void logar(){
    char validanome[50];
    char validasenha[50];
    char login[50];
    char pass[50];
    int logado=0;

    FILE *nome;
    nome = fopen("nomes.txt","r")   ;
    FILE *endereco;
    endereco = fopen("endereco.txt","r");
    FILE *senha;
    senha = fopen("senha.txt","r");

    printf("Digite seu login:");
    gets(login);
    fscanf(nome,"%s",validanome);

    if (strcmp(login,validanome)==0){
        printf("Digite sua senha:");
        gets(pass);
        fscanf(senha,"%s",validasenha);
        if (strcmp(pass,validasenha)==0){
           printf("Bem Vindo %s",login);
           logado=1;
        }
        else{
            printf("Senha Invalida");
            printf("\n");
            logar();
        }
    }
    else{
        printf("Login Invalido");
        printf("\n");
        logar();

    }

}

 

Alguém pode me ajudar? Preciso saber como comparar o Login digitado com as próximas linhas do arquivo em txt.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
#include<stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct Dados{
    char user[60];
    int  senha;    
    char direcao[60];
}Dados;


int main(){
    
    Dados pesquisa = { "barata triple carpado", 123456, "Rua Suja" };
    Dados dados;
    
    FILE* teste;
    
    if ( !(teste=fopen("teste.txt", "r")) ){
        perror("Erro ");
        getchar();
        exit(1);
    }
    
    
    while( fscanf(teste, "%[^,], %d, %[^\n]\n", dados.user, &dados.senha, dados.direcao ) != EOF ){
        //printf("%s==%s\n", pesquisa.user, dados.user);
        
        if ( strcmp( pesquisa.user, dados.user ) == 0 )
            printf("Encontrado: %s %d %s\n\n", dados.user, dados.senha, dados.direcao);
    
    }
    printf("Bye!");
    
    
    fclose(teste);
    return 0;
}

Suponhamos que quero buscar:

Dados pesquisa = { "barata triple carpado", 123456, "Rua Suja" };


É só ler cada linha com:

 while( fscanf(teste, "%[^,], %d, %[^\n]\n", dados.user, &dados.senha, dados.direcao ) != EOF ){

 

E dentro do while:

        if ( strcmp( pesquisa.user, dados.user ) == 0 )
            printf("Encontrado: %s %d %s\n\n", dados.user, dados.senha, dados.direcao);

Se o que queremos é buscar o usuario. Não há necessidade de usar 3 arquivos.

Deixo aqui o arquivo para você testar: teste.txt

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×