Mam problem z którym nie mogę się uporać. Mianowicie program nie chce mi wczytać danych z pliku txt. Proszę o wszelkie wskazówki.
Kod z pliku naglowkowego:
#ifndef baza
#define baza
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <string>
using namespace std;
struct Osoba
{
char imie[20];
char nazwisko[30];
float ocena;
};
Osoba *WpiszDane(int rozmiar)
{
Osoba *osoba;
osoba = new Osoba [rozmiar];
if(osoba == 0)
{
cout<<"Nie mozna przydzielic pamieci"<<endl;
return 0;
}
for (int i=0; i<rozmiar; i++)
{
cout<<"Wprowadz imie studenta nr "<<i+1<<endl;
cin>>osoba[i].imie;
cout<<"Wprowadz nazwisko studenta nr "<<i+1<<endl;
cin>>osoba[i].nazwisko;
cout<<"Wprowadz ocene studenta"<<endl;
cin>>osoba[i].ocena;
}
return osoba;
}
void Zapisz(Osoba *osoba, int rozmiar, char *nazwa)
{
FILE *strumien;
strumien = fopen (nazwa, "wt");
for(int i=0; i<rozmiar;i++)
{
fprintf(strumien,"%s %s %f\n",osoba[i].imie, osoba[i].nazwisko, osoba[i].ocena);
}
fclose(strumien);
}
Osoba *Wczytaj(int rozmiar)
{
char nazwa[20];
cout<<"Wpisz nazwe"<<endl;
cin>>nazwa;
Osoba *osoba;
osoba = new Osoba [rozmiar];
FILE*strumien;
strumien=fopen(nazwa,"r+t");
int i=0;
while(!feof(strumien))
{
fscanf(strumien,"%s %s %f",osoba[i].imie,osoba[i].nazwisko, osoba[i].ocena);
i++;
}
return osoba;
}
void menu()
{
cout<<"Menu:\n";
cout<<"1. Wprowadz dane studentow"<<endl;
cout<<"2. Wyswietl dane studentow"<<endl;
cout<<"3. Osoba z najgorsza ocena"<<endl;
cout<<"4. Osoba z najlepsza ocena"<<endl;
cout<<"5. Zapisz do pliku"<<endl;
}
#endif
A tutaj kod z pliku main:
#include "naglowki.h"
Osoba *wsk;
int rozmiar;
int main()
{
char n;
for(;;)
{
menu();
cin>>n;
system("cls");
switch (n)
{
case '1':
{
if(wsk!=0)
{
delete [] wsk;
}
cout<<"Ile osob chcesz wprowadzic>?"<<endl;
cin>>rozmiar;
wsk=WpiszDane(rozmiar);
break;
}
case '2':
{
for(int i=0; i<rozmiar; i++)
{
cout<<"Dane studenta nr:"<<i+1<<endl;
cout<<wsk[i].imie<<endl<<wsk[i].nazwisko<<endl<<"Ocena: "<<wsk[i].ocena<<endl;
}
break;
}
case '3':
{
Osoba min;
min=wsk[0];
for (int i=0;i<rozmiar;i++)
{
if (wsk[0].ocena > wsk[i].ocena)
{
min = wsk[i];
}
}
cout<<"Osoba z najgorsza ocena ("<<min.ocena<<") to "<<min.imie<<" "<<min.nazwisko<<endl;
break;
}
case '4':
{
Osoba max;
max=wsk[0];
for (int i=0;i<rozmiar;i++)
{
if(wsk[0].ocena < wsk[i].ocena)
{
max=wsk[i];
}
}
cout<<"Osoba z najlepsza ocena ("<<max.ocena<<") to "<<max.imie<<" "<<max.nazwisko<<endl;
break;
}
case '5':
{
char nazwa1[20];
cout<<"Podaj nazwe pliku"<<endl;
cin>>nazwa1;
Zapisz(wsk,rozmiar,nazwa1);
break;
}
case '6':
{
wsk=Wczytaj(rozmiar);
break;
}
}
}
}
Z góry dziękuję za każdą pomoc