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

Como utilizar a função fopen para abrir múltiplos arquivos


Davi_c

Pergunta

Estou criando um login em C que precisa ser capaz de guardar múltiplos usuários e fazer com que eles possam logar. Em dado momento percebi que o fopen com o "wb" reescreve os usuários anteriores, mantendo só um. Há a possibilidade de abrir ele com a+, mas se eu fizer isso a minha função login não vai ser mais capaz de permitir a ninguém logar. Sendo assim, minha decisão foi: abrir um arquivo para cada usuário, e depois faço com que minha função login olhe arquivo por arquivo vendo se as credenciais de acesso do usuário batem com as de qualquer arquivo. O problema é que não consigo fazer a função fopen abrir diferentes arquivos utilizando a variável i. Tentei de diversas maneiras, mas aparentemente a função simplesmente não comporta mais argumentos do que "arquivo_nome", "wb". Alguém tem uma ideia de como fazer isso? Abaixo, minha função cadastrar.

void cadastrar_user() {
FILE *fp;
struct usuario_t usuario;
int i = 0;
memset(&usuario,0,sizeof(struct usuario_t));

printf("\n ------Cadastro de usuario------");
printf("\n\n Insira um login> ");
scanf("%s", &usuario.login);
printf("\n Insira uma senha> ");
scanf("%s", &usuario.senha);

i++;
fp = fopen("registro", "wb");
fwrite(&usuario, sizeof(struct usuario_t), 1, fp);
fclose(fp);
printf("\n");
printf("\n ---- Usuario cadastrado, redirecionando para login! ----");
login();

Abaixo, minha função login:

int login(){
FILE *fp;
struct usuario_t usuario;
fp = fopen("login","rb");
memset(&usuario, 0, sizeof(struct usuario_t));

fread(&usuario, sizeof(struct usuario_t), 1, fp);
fclose(fp);
if(!strcmp("", usuario.login)){
printf("\n ----Cadastro não encontrado, redirecionando para cadastro!----\n");
cadastrar_user();}

 else {
        char login[LOGIN_MAX];
        char senha[SENHA_MAX];
        printf("\n Login> ");
        scanf("%s", &login);
        printf(" Senha> ");
        scanf("%s", &senha);
        if (!strcmp(login, usuario.login) && !strcmp(senha, usuario.senha)) {
            printf("\n Bem vindo %s!\n", usuario.login);
            menu_crud();
            return 0;
        } else {
            printf(" \n----Usuario ou senha invalidos!----\n");
            printf("\n  Tente novamente! Redirecionando para a pagina inicial\n\n");
            main();
        }
}
return 0;
}

 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
Em 28/11/2021 em 03:01, Davi_c disse:

Há a possibilidade de abrir ele com a+, mas se eu fizer isso a minha função login não vai ser mais capaz de permitir a ninguém logar.

Existem outras opções de abertura como r+

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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...