const char* PLEC[] = { "MEZCFZYZNA","KOBIETA" };
const char* STOPIEN[] = { "I","II","III"};
enum Plec { MEZCZYZNA, KOBIETA };
enum Stopien { I, II, III };
struct Student {
char imie[40];
char nazwisko[60];
Plec plec;
Stopien stopien;
int semestr;
};
void wypelnij(Student& p,const char* imie, const char* nazwisko, Plec plec,Stopien stopien, int semestr) {
strncpy(p.imie, imie, 40);
strncpy(p.nazwisko, nazwisko, 60);
p.plec = plec;
p.stopien = stopien;
p.semestr = semestr;
}
void ZapiszDoP(const char* nameP,Student st) {
FILE* desp = fopen(nameP, "w");
fprintf(desp, "%s; %s; %s; %s; %d;\n", st.imie,st.nazwisko, PLEC[int(st.plec)], STOPIEN[int(st.stopien)], st.semestr);
fclose(desp);
}
void odczytajZP(const char* nameP,Student& st) {
char imie[40] = {};
char nazwisko[60] = {};
char plectxt[20] = {};
char stopientxt[20] = {};
Plec plec;
Stopien stopien;
int sem;
FILE* desp = fopen(nameP, "r");
rewind(desp);
fscanf(desp, "%[^;]; %[^;]; %[^;]; %[^;]; %d;\n", imie,nazwisko,plectxt,stopientxt,&sem);
/* fscanf(desp, "%s; ", imie);
fscanf(desp, "%s; ", nazwisko);
fscanf(desp, "%s; ", plectxt);
fscanf(desp, "%s; ", stopientxt);
fscanf(desp, "%d; ", &sem);*/
imie[strlen(imie) - 1] = '\0';
nazwisko[strlen(nazwisko) - 1] = '\0';
plectxt[strlen(plectxt) - 1] = '\0';
stopientxt[strlen(stopientxt) - 1] = '\0';
plec = (strcmp(plectxt, PLEC[0])) ? Plec::KOBIETA : Plec::MEZCZYZNA;
if (strcmp(stopientxt, STOPIEN[0])==0)
{
stopien = Stopien::I;
cout << "\nczemu\n";
}
else if(strcmp(stopientxt, STOPIEN[1])==0)
{
stopien = Stopien::II;
}
else if (strcmp(stopientxt, STOPIEN[2])==0)
{
stopien = Stopien::III;
}
else {
cout << "\n+++++" << stopientxt << '\n';
stopien = Stopien::I;
}
wypelnij(st, imie, nazwisko, plec, stopien, sem);
fclose(desp);
}
ostream& operator<<(ostream& ekr, Student& st) {
ekr << st.imie <<" " << st.nazwisko << " " << PLEC[int(st.plec)] << " " << STOPIEN[int(st.stopien)] << " " << st.semestr << "\n";
return ekr;
}
int main() {
Student st1;
wypelnij(st1,"marek", "markowski", Plec::KOBIETA, Stopien::I, 3);
ZapiszDoP("a.txt",st1);
Student st2;
odczytajZP("a.txt", st2);
cout << st2;
}