Mam problem. Chce aby funkcja logowanie zwracała login po poprawnym zalogowaniu, ale coś mi nie wychodzi:( Byłbym wdzięczny za jakąś wskazówkę.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct baza {
char *login;
char *haslo;
int upr;
struct baza *nastepny;
};
struct baza *pierwszy=NULL;
struct baza *ostatni=NULL;
dodaj()
{
int upr;
char login[10],haslo[20];
FILE *p;
printf("podaj login:\n");
scanf("%s",&login);
printf("podaj haslo:\n");
scanf("%s",&haslo);
p=fopen ("uzytkownicy124.txt", "r");
if (p==NULL) {
upr=3;
}
else upr=0;
struct baza *nowy;
struct baza * tmp;
nowy=malloc(sizeof(struct baza));
nowy->login=malloc(strlen(login)+1);
strcpy(nowy->login,login);
nowy->haslo=malloc(strlen(haslo)+1);
strcpy(nowy->haslo,haslo);
nowy->upr=upr;
nowy->nastepny=NULL;
if(pierwszy==NULL){
pierwszy=ostatni=nowy;
// return 0;
}
else {
ostatni->nastepny=nowy;
ostatni=nowy;
}
p=fopen("uzytkownicy124.txt", "a+");
tmp=pierwszy;
while(tmp!=NULL) {
fprintf (p,"%s %s %d\n",tmp->login,tmp->haslo,tmp->upr);
tmp=tmp->nastepny;
fclose(p);
}
}
char logowanie ()
{
char s[30];
int i;
FILE * p;
struct baza * tmp;
system("cls");
p=fopen("uzytkownicy124.txt", "r");
while(pierwszy!=NULL) {
free(pierwszy->haslo);
free(pierwszy->login);
pierwszy=pierwszy->nastepny;
}
while(!feof(p)) {
tmp= calloc(1, sizeof(struct baza));
fscanf(p, "%d\n", &i);
tmp->upr=i;
tmp->login=calloc(30, 1);
fscanf(p, "%s\n", s);
strcpy(tmp->login, s); //odwrotnie?
tmp->haslo=calloc(30, 1);
fscanf(p, "%s\n", s);
strcpy(tmp->haslo, s);
tmp->nastepny=NULL;
if(pierwszy==NULL){
pierwszy=ostatni=tmp;
// return 0;
}
else {
ostatni->nastepny=tmp;
ostatni=tmp;
}
}
fclose(p);
tmp=pierwszy;
char nazwa[20];
char haslo[20];
int znaleziono=0;
system("cls");
printf("LOGIN:\n");
scanf("%s",&nazwa);
printf("HASLO:\n");
scanf("%s",&haslo);
while(tmp!=NULL){
if(strcmp(tmp->login,nazwa)==0){
znaleziono=1;
if(strcmp(tmp->haslo,haslo)==0)
znaleziono=2;
break;
}
tmp=tmp->nastepny;
}
if(znaleziono==0) {printf("Nie ma takiego uzytkownika\n"); exit (0);}
if(znaleziono==1) {printf("ZLE HASLO"); exit (0);}
if(znaleziono==2) {printf("ZALOGOWALES SIE!\n");}
fflush(stdin);
fgetc(stdin);
return nazwa[20];
}
main ()
{
char nazwa[20];
int i;
dodaj ();
logowanie();
printf ("Twoj login to%s",nazwa);
}