thanks for the code and alternative way...
I've been looking into how to do it also
and came up with this:
(sorry if the code is lame... I'm still quite new at C)
also the printf's are in dutch...
Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int inloggen(void){
char user[15];
char pass[15];
char **temp_user,**temp_pass,lijn[31],c='o'; //15+15+1
//int's voor de lussen...
int sw_ok=1, sw_user=1, sw_pass=1,sw_gevonden=0,lengte=0,i=0;
FILE *login;
printf("\t**********************************************\n");
printf("\t* Login *\n");
printf("\t**********************************************\n");
login=fopen("users.dat", "rb");
fscanf(login,"%*s");
while(!feof(login))
{ lengte++;
fscanf(login,"%*s");
}
rewind(login);
temp_user=calloc(sizeof(char*),lengte);
temp_pass=calloc(sizeof(char*),lengte);
for(i=0;i<lengte;i++)
{ fscanf(login,"%s",lijn);
temp_user[i]=malloc(16);
strncpy(temp_user[i],lijn,15);
fscanf(login,"%s",lijn);
temp_pass[i]=malloc(16);
strncpy(temp_pass[i],lijn,15);
}
fclose(login);
while (sw_ok)
{
while(sw_user)
{
printf("Gebruikersnaam: ");
scanf("%15s%c", user,&c);
if(c!='\n')
{
printf("Deze gebruikersnaam is te lang. U kan enkel een gebruikersnaam gebruiken van 15 karakters.\n");
scanf("%*[^\n]%*c");
}
else sw_user=0;
}
while(sw_pass)
{
printf("Geef uw paswoord: ");
scanf("%15s%c",pass,&c);
if(c!='\n')
{
printf("Foutief paswoord...(te lang, max 15 karakters)\n");
scanf("%*[^\n]%*c");
}
else sw_pass=0;
}
for(i=0;i<lengte;i++){
if (strcmp(temp_user[i], user) == 0 && strcmp(temp_pass[i], pass) ==0){
sw_ok=0;
sw_gevonden=1;
}
else {
sw_user=1;
sw_pass=1;
}
}//einde for lus
if (sw_gevonden)
{
printf("***********************\n");
printf("* Toegang OK *\n");
printf("***********************\n");
menu();
}
else printf("Foute gebruikersnaam of paswoord\nProbeer opnieuw AUB\n");
}
return 0;
}