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