Ir para conteúdo
Fórum Script Brasil
  • 0

[Ajuda] Sistema de Cadastro em txt no C


dfop02

Pergunta

Eu estou fazendo um trabalho na faculdade e preciso de um sistema que "cadastre" uma pessoa usando txt, pois estou no 1 periodo, e não tenho recursos como banco de dados para utilizar, pensei em fazer assim, a entrada sera o usuario, senha e confirmação da senha, ele vai salvar essas informações em um arquivo txt, para que mesmo fechando o programa, ele continue a funcionar, aí, o sistema de login funcionaria se por acaso um desses login e senha fossem usados. Será que é muito complicado de se aplicar? Podem me ajudar? Tenho poucas semanas. Eu tentei montar algo, mas o que eu fiz transcreve por cima do que já salvou!

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
Em 2017-5-2 at 00:13, Nefisto disse:

Pode a gente pode, mas você precisa mandar alguma coisa doq você já fez, ou pelo menos tento, já q a intenção é AJUDAR.  E não, não é complicado de fazer =D

Perdão pela demora, eu não estava com ele comigo, eu deixei na faculdade, mas ontem fui lá e fiz uma copia pra mim, a parte de cadastro está assim:

char cadastro(){
    FILE *fptr;
    
    fptr = fopen("login.txt", "a");
 
    if (fptr == NULL){
        printf("Falha ao conectar \n");
        return;
    }
    printf("\nUsuario: ");
    scanf("%s", &usuario);
    fprintf(fptr, "Usuario: %s\n", usuario);
    
    printf("\nSenha: ");
    fsenha(senha);
    /*fprintf(fptr, "Senha: %s\n", senha);*/
    
    printf("\n\nConfirme a Senha: ");
    fsenha(csenha);
    fprintf(fptr, "Senha: %s\n", csenha);
    fprintf(fptr, " ");
    
    /*if (senha == csenha){
        fprintf(fptr, "Usuario: %s\n", usuario);
        fprintf(fptr, "Senha: %s\n", csenha);
    }
    else{
        printf("\nConfirmacao de senha incorreta");
        system("pause>null");
        cadastro();
    }*/
    fclose(fptr);
}

Por enquanto ele só escreve no txt, dps como comentario tentei botar um erro alí caso digitasse a confirmação de senha diferente da senha, mas não deu certo e deixei assim pra corrigir dps, e a função fsenha abaixo faz com que a senha fique oculta a quem digita, mas ele tem um erro também, ele vai direto sem a necessidade de pressionar enter, acredito q tirando o for pra while daria certo, mas n imagino como fazer.

char fsenha (char senha[6])
{
    i = 0;
    for(i = 0; i <= 5; i++){
        senha[i] = getch();
        if(senha[i] == '\r')
            break;
        else
            printf("*");
    }
	senha[i] = '\0';
}

E a parte de login() eu não tenho mesmo ideia do que fazer, pensei em fazer com q cada login gerasse uma ID unica para cada usuario e senha, mas n tenho ideia de como reconhecer cada id como tal usuario e tal senha... Essa parte realmente estou a deriva, só sei q preciso abrir o arquivo txt para ler as informações, mas fora isso... E você disse que era facil, quase infartei hahaha

Podem me ajudar?

Link para o comentário
Compartilhar em outros sites

  • 0

@dfop02 Opa, cara foi mal a demora, provas... Aew montei agora aqui na facul então pode se que tenhas erros, ve se é isso que você queria. Espero ter ajudado

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

#define CLEAN_BUFF do{ int c; while((c = getchar()) != '\n' && c != EOF);}while(0) //substitui esse parte por getchar() se você preferir
	
#define MAX_SENHA 6
#define MAX_LOGIN 50

int Usuario( FILE* file, char* user, char* senha ) //Verifica se é um usuario valido
{
	char tmpLogin[MAX_LOGIN];
	char tmpSenha[MAX_SENHA];
	
	fscanf(file, "%s", tmpLogin);
	
	while( !feof(file) )
	{
		if( !strcmp(tmpLogin, user) )
		{
			fscanf(file, "%s", tmpSenha);
			
			if( !strcmp(tmpSenha, senha) )
				return 1;
		}
		else
		{
			fscanf(file, "%*s");
		}
		
		fscanf(file, "%s", tmpLogin);
	}
	
	return 0;
}

char* CriaSenha()
{
    register int i;
	
	char* senha = (char*)malloc(sizeof *senha * MAX_SENHA);
	
    for(i = 0; i < MAX_SENHA; i++)
	{
        senha[i] = getch();
        if(senha[i] == '\r')
            break;
        else
            printf("*");
    }
	senha[i] = '\0';
	
	return senha;
}

int main()
{
	FILE* fpIN;
	
	int option = 0;
	
	char *user  = (char*)malloc(sizeof *user * MAX_LOGIN);
	char *senha,
		 *confirmaSenha;
	
	do
	{
		printf("1- Login\n2- Cadastrar\n3- Sair\n");
		scanf("%d", &option);
		CLEAN_BUFF;
		
		switch( option )
		{
			case 1:
				
				printf("Usuario: ");
				gets(user);
				printf("Senha: ");
				senha = CriaSenha();
				
				fpIN = fopen("usuarios.txt", "a+");
				printf("\nUsuario %sconfirmado.\n", Usuario(fpIN, user, senha) ? "" : "não ");
				fclose(fpIN);
				
				free(senha);
			break;
			
			case 2:
				printf("Usuario: ");
				gets(user);
				
				do
				{
					printf("Senha: ");
					senha = CriaSenha();
					printf("\nConfirmacao de senha: ");
					confirmaSenha = CriaSenha();
					printf("\n");
					
					if( !strcmp(senha, confirmaSenha) )
						break;
					else
						printf("As senhas não são iguais. Tente novamente.\n");
				}while(1);
				
				fpIN = fopen("usuarios.txt", "a+");
				fprintf(fpIN, "%s %s\n", user, senha);
				fclose(fpIN);
				
				free(senha);
				free(confirmaSenha);
			break;
			
			case 3:
				return 0;
				
			default:
				printf("Escolha 1, 2 ou 3...\n");
			break;
		}
	
	}while( 1 );
	
	return (0);
}

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...