Wszystkie funkcje działają oprócz wczytaj.
Mogę dodawać nowych pracowników, wyświetlać dodanych, zapisywać do pliku ale odczytać już nie można, program się crashuje.
#include "stdafx.h"
struct pracownik
{
char nazwisko[50];
int pensja;
};
int ilosc=0;
pracownik tablica[50];
void wczytaj()
{
FILE *plik;
fopen_s(&plik, "pracownicy.txt", "rt");
while (feof(plik) == 0)
{
if (ilosc<50)
{
fscanf_s(plik, "%s", &tablica[ilosc].nazwisko);
fscanf_s(plik, "%d", &tablica[ilosc].pensja);
ilosc++;
}
else break;
}
}
void nowy()
{
if (ilosc<50)
{
scanf_s("%s", &tablica[ilosc].nazwisko, 50);
scanf_s("%d", &tablica[ilosc].pensja);
}
ilosc++;
}
void wyswietl()
{
for (int i = 0; i<ilosc; i++)
{
printf("%s ", tablica[i].nazwisko);
printf("%d\n", tablica[i].pensja);
}
}
void zapisz()
{
FILE *plik;
fopen_s(&plik, "pracownicy.txt", "wt");
for (int i = 0; i<ilosc; i++)
{
fprintf(plik, "%s ", tablica[i].nazwisko, 1);
fprintf(plik, "%d\n", tablica[i].pensja);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
ilosc = 0;
bool dalej = true;
int liczba;
printf("0-zamkniecie programu\n1-wczytaj z pliku\n2-nowy\n3-zapisz do pliku\n4-wyswietl\nOpcja: ");
scanf_s("%d", &liczba);
void(*TabFun[4])() = { wczytaj, nowy, zapisz, wyswietl };
while (dalej)
{
if (liczba>0 && liczba <= 4)
TabFun[liczba - 1]();
else if (liczba == 0) dalej = false;
scanf_s("%d", &liczba);
}
return 0;
}