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;structusuario_t usuario;int i =0;
memset(&usuario,0,sizeof(structusuario_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(structusuario_t),1, fp);
fclose(fp);
printf("\n");
printf("\n ---- Usuario cadastrado, redirecionando para login! ----");
login();
Abaixo, minha função login:
int login(){FILE*fp;structusuario_t usuario;
fp = fopen("login","rb");
memset(&usuario,0,sizeof(structusuario_t));
fread(&usuario,sizeof(structusuario_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();return0;}else{
printf(" \n----Usuario ou senha invalidos!----\n");
printf("\n Tente novamente! Redirecionando para a pagina inicial\n\n");
main();}}return0;}
Pergunta
Davi_c
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.
Abaixo, minha função login:
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
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.