Ir ao conteúdo

LuizFer17

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

Reputação

3
  1. Obrigado @devair1010consegui ajustar e resolver com o fscanf. Caso ajude alguém, deixo aqui o cod corrigido. int access(){ char nome[21], senha[21], id[21], pw[21]; FILE *logincred; logincred = fopen("/home/k4nek1/Desktop/login.txt","r"); log: ; int nm=0; printf("\nDigite seu usuário:\n"); scanf("%s",&nome); while(fscanf(logincred,"%s",id)!= EOF){ if(strcmp(nome,id)==0){ nm = 1; break; } } pwd: ; int sn=0; printf("\nDigite sua senha: \n"); scanf("%s",&senha); while(fscanf(logincred,"%s",pw)!= EOF){ if(strcmp(pw,senha)==0){ sn = 1; break; } } fclose(logincred); if(nm == 1 && sn == 1){ printf("Acesso realizado com sucesso! \n"); menup(); //função criada para acessar o menu de cadastro. }else if(nm == 0){ printf("Login não cadastrado. Tente novamente.\n"); goto log; }else if(sn == 0){ printf("Senha incorreta."); goto pwd; } }
  2. @devair1010 Olá, obrigado pela resposta. Entendi o que me informou, porém, surgiram algumas dúvidas. Primeiro ponto, eu ajustei a função de criação de login conforme sugeriu. Função de criação de login: int crtuser(){ char id[21], senha[21]; int tam; FILE *logincred; logincred = fopen("login.txt","a"); if(logincred==NULL){ logincred = fopen("login.txt","w"); } inicio : printf("\nCrie seu login de usuário com seu primeiro nome: \n"); scanf("%s",&id); tam = strlen(id); if(tam > 20){ printf("Limite de caracteres excedido, tente novamente."); goto inicio; } check_pass : printf("\nCrie sua senha com 8 à 20 caracteres.\n"); scanf("%s",&senha); tam = strlen(senha); if(tam < 8 || tam > 20){ printf("Senha não segue os critérios, tente novamente."); goto check_pass; } fprintf(logincred,"%s ",id); fprintf(logincred, "%s \n", senha); fclose(logincred); } O segundo ponto é na função de acesso, - o codigo que você passou, seria um incremento do meu ou um novo? - no loop while eu não entendi a sintaxe do scanf, por ele consigo ler dados de um arquivo ou somente com fscanf? - eu não entendi a lógica do código, pois eu quero cadastrar mais de um login, como ocorreria a leitura de linha por linha? não consegui visualizar o incremento. int access(){ char nome[21], senha[21]; FILE *logincred; logincred = fopen("login.txt","r"); log: ; int nm=0; printf("\nDigite seu usuário:\n"); scanf("%s",&nome); pwd: ; int sn=0; printf("\nDigite sua senha: \n"); scanf("%s",&senha); while(scanf(logincred,"%s",nome)!= EOF){ if(strcmp(nome,nome)==0){ nm = 1; break; } } if(strcmp(scanf(logincred,"%s",senha),senha)==0){ sn=1; } fclose(logincred); if(nm == 1 && sn == 1){ printf("Acesso realizado com sucesso. \n"); return 1; }else if(nm == 0){ printf("Login não cadastrado. \n"); goto log; }else if(sn == 0){ printf("Senha incorreta."); goto pwd; } return 0; } Obrigado novamente pela ajuda.
  3. Olá, estou com o seguinte problema. Estou tentando criar um sistema de login simples com base em um FILE. A ideia é que o usuário crie seu acesso com login e senha e que ambos em sejam armazenados no FILE. Depois de criado, jogarei todos os dados do FILE para um vetor[10][100] e aí preciso comparar cada elemento do vetor com o login e depois com a senha. OBS: Sou totalmente iniciante em programação e C, praticamente 1 mês, então desconsiderem possíveis erros grotescos. O sistema é para fins acadêmicos, então não precisa estar 100% clean, apenas funcional. Segue uma parte do código: int crtuser(){ //função para criar um usuário char id[20]; int tam; FILE *logincred; logincred = fopen("login.txt","a"); printf("\nCrie seu login de usuário com até 20 caracteres: \n"); scanf("%s",&id); tam = strlen(id); if(tam>20){ printf("Limite de caracteres excedido, tente novamente."); return crtuser(); } fprintf(logincred,"%s\n",id); fclose(logincred); } int access(){ //função para acessar o sistema FILE *logincred; logincred = fopen("login.txt","r"); char id[20]; char pwd[10]; char ida[20]; char pwda[10]; char accs[10][100]; int i; printf("Digite seu usuário:\n"); scanf("%s",&ida); for(i=0;i<10 && fgets(accs[i],100,logincred) != NULL;i++){ if(strcmp(accs[i],ida)==0){ fscanf(logincred,"%s",id); }else{ printf("Login não localizado."); break; } printf("Digita sua senha: \n"); scanf("%s",&pwda); for(i=0;i<10 && fgets(accs[i],100,logincred) != NULL;i++){ if(strcmp(accs[i],pwda)==0){ fscanf(logincred,"%s",pwd); }else{ printf("Senha não localizada."); } } if(strcmp(ida,id)==0 && strcmp(pwda,pwd)==0){ printf("Acesso realizado com sucesso. \n"); }else{ printf("Usuário ou senha incorreto. Tente novamente. \n"); return access(); } fclose(logincred); } Obrigado pela ajuda desde já!

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!