Ir ao conteúdo

Posts recomendados

Postado

Olá eu estou fazendo um programa de cadastro com login e senha, algo simples. Porém na hora de ler o que tem dentro do arquivo para ver se o login e a senha são verdadeiro igual do cadastro , eu simplesmente travei ai....

===============================================================================================================================

 

 

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <windows.h>

 

void cadastro()
{
    setlocale(LC_ALL,"PORTUGUESE");
    FILE * arq;
    arq = fopen("cadastro.txt", "a");

    char login[50], senha[50], email[50];

    if (arq == NULL)
    {
        printf("O arquivo não pode ser gerado");
        system("pause");
    }

    printf("=============cadastro============\n"); fprintf(arq, "-------------cadastro-----------\n");
    printf("Escreva seu Login: ");
    scanf("%s", &login);
    fprintf(arq, "Login: %s \n", login);

    printf("Escreva sua senha: ");
    scanf("%s", &senha);
    fprintf(arq, "Senha: %s \n", senha);

    printf("Escreva seu email: ");
    scanf("%s", &email);
    fprintf(arq, "Email: %s \n\n", email);

    printf("\n");
    printf("Cadastro gerado com sucesso!\n");

    fclose(arq);


}

 

void menunaoincial()

{
char c;
setlocale(LC_ALL,"PORTUGUESE");
printf("Se você nao tiver uma conta aperte 'F' maiusculo\n");
printf("Se já tiver uma conta aperte qualquer tecla!!!\n\n");


c = getch();
printf(" ");

system("cls");

switch(c)
{
case 'F':
cadastro();
getchar();
Sleep(3000);
printf("retornando aguarde...");
system("cls");
return main();
}
}

void menu()
{

setlocale(LC_ALL,"PORTUGUESE");
menunaoincial();
char r;
FILE * arq;
arq = fopen("cadastro.txt", "r");

printf("=======Menu de Acesso=========\n");
printf("login: "); scanf("%s", &r);

printf("senha: ");

}

 

main()
{
    setlocale(LC_ALL,"PORTUGUESE");
    menu();
    printf("Acessando...\n");
    Sleep(3000);
    system("cls");
    printf("====programa====\n");
    printf("Instruçôes do programa ....");

}
 

  • Curtir 1
  • Confuso 1
Postado

@mateus costa r    seu código está certo ficou faltando colocar os comandos para fazer a leitura do arquivo e comparar com o login e a senha :   então seu código ficaria assim : 

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <locale.h>
#include <windows.h>
#include <string.h>
FILE * arq;
int n,v;
void cadastro(){
    char login[50], senha[50], email[50];
    system("cls");
    arq=fopen("cadastro.txt","r");
    fclose(arq);
    if(arq==NULL){
        arq = fopen("cadastro.txt","a");
        if (arq == NULL){
            printf("O arquivo não pode ser gerado");
            system("pause");
        }
        printf("=============cadastro============\n");
        fprintf(arq, "-------------cadastro-----------\n");
        printf("Escreva seu Login: ");
        gets(login);
        fprintf(arq, "Login: %s \n", login);
        printf("Escreva sua senha: ");
        fflush(stdin);
        gets(senha);
        fprintf(arq,"Senha: %s \n",senha);
        printf("Escreva seu email: ");
        fflush(stdin);
        gets(email);
        fprintf(arq, "Email: %s \n\n", email);
        printf("\n");
        printf("Cadastro gerado com sucesso!\n");
        fclose(arq);
    }
}

void menu_nao_incial()
{
    char c;
    printf("Se você não tiver uma conta aperte 'F' maiúsculo\n");
    printf("Se já tiver uma conta aperte qualquer tecla!!!\n\n");
    c = getch();
    switch(c){
        case 'F':
            cadastro();
            printf("    Tecle . . .\n");
            getchar();
            printf("retornando aguarde...");
            Sleep(3000);
            system("cls");
    }
}
void menu(){
    char a[20],r[20],s[20],w;
    int x;
    menu_nao_incial();
    do{
        x=0,v=0,n=0;
        printf("=======Menu de Acesso=========\n");
        printf("login: ");
        fflush(stdin);
        gets(r);
        printf("senha: ");
        fflush(stdin);
        gets(s);
        arq=fopen("cadastro.txt","r");
        while(fscanf(arq,"%s",a)!=EOF){
            if(strcmp(a,s) == 0){
	            v=1;
	            break;
            }
        }
        fclose(arq);
        arq=fopen("cadastro.txt","r");
        while(fscanf(arq,"%s",a)!=EOF){
            if(strcmp(r,a)==0){
                n=1;
            }
        }
        fclose(arq);
        if(n==0){printf("Login Errado\n");}
        if(v==0){printf("Senha Errada\n");}
        if(n==0 || v==0){
            printf("Quer Tentar Novamente  S/N ");
            scanf("%c",&w);
            if(w=='n'){x=1;}
            printf("\n");
        }
        else{
            printf("\nLogin e Senha certos\n\n");
            x=1;
        }
    }while(x==0);
}
int main(){
    setlocale(LC_ALL,"");
    menu();
    if(n==0 || v==0)return 0;
    printf("Acessando...\n");
    Sleep(3000);
    system("cls");
    printf("====programa====\n");
    printf("Instruçôes do programa ....\n");
    return 0;
}

 

Postado

obg , fiquei travadão nessa parte e nem sabia o que fazer... estou aprendendo ainda. Você teria algum site ou canal de youtube que ensina-se alguns códigos ai que nunca vi ,tipo:

>strcmp;

>fflush(stdin);

>fflush;

 

agradeço mesmo xD , agora vou estudar esse código , teria algum problema em mudar as ordens de procedimento ?

 

*******EDITADO*****

Testei o programa rodou liso, porém quando eu fechei o programa para ver se o login e a senha que eu digitei ainda seriam validos, eu percebi que ele aceita qualquer senha. :/

 

  • Curtir 1

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