Dzień dobry! Pisząc kod napotkałem się na następujący problem. Funkcja wypiszZnaki2 wywołuje się dwukrotnie. Nie mogę zauważyć błędu. Proszę o pomoc!
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <cstring>
using namespace std;
void wpisanie(char *pliczek, string T[][256],int &n)
{
ofstream fout(pliczek);
if (!fout) cout << "plik nie zostal otwarty" << endl;
else
{
cout<<"Ilu studentow dane osobowe chcesz wpisac? Wprowadz n ";
cin>>n;
cout<<endl;
cout<<"Podaj nastepujace informacje: "<<endl;
cout<<"Po uzupelnieniu jednej osoby nacisnij dodatkowy eneter!"<<endl;
cout<<endl;
T[0][0]="NAZWISKO"; T[0][1]="IMIE"; T[0][2]="WIEK"; T[0][3]="MIEJSCE URODZENIA"; T[0][4]="TELEFON";
for (int i=0;i<1;i++)
{
for (int j=0;j<5;j++) cout<<T[i][j]<<"\t";
}
cout<<endl;
for (int i=0;i<n;i++)
{
for (int j=0;j<6;j++) getline(cin,T[i][j]);
}
for (int i=0;i<n;i++)
{
for (int j=0;j<6;j++) fout<<T[i][j]<<"\t";
fout<<endl;
}
fout.close();
cout << endl;
}
}
void wypiszZnaki (char *pliczek)
{
char znak;
ifstream fin(pliczek);
if (!fin) cout<<"plik nie zostal otwarty"<<endl;
else
{
cout<<"\nDane zawarte w pliku:"<<endl;
// while (!fin.eof())
// {
// fin.get(znak); //fin>>znak;
// cout<<znak;
// }
while (fin.get(znak)) cout<<znak;
cout<<endl;
fin.close();
}
fflush(stdin);
}
void wypiszZnaki2(char *nazwapliku, string T[][256], int n)
{
string liczba;
ifstream fin(nazwapliku);
if (!fin) cout << "plik nie zostal otwarty" << endl;
else
{
while (!fin.eof())
{
fin >> liczba;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < 6; j++)
{
if ((T[i][j]==T[i][1])|| (T[i][j]==T[i][5]))
{
cout << T[i][j] << "\t";
}
}
cout << endl;
}
cout << endl;
cout<<endl;
fin.close();
cout << endl;
}
fflush(stdin);
}
}
int main(void)
{
string T[256][256];
int n;
char *plik1 = "plik1.txt", *plik2 = "plik2.txt";
wpisanie(plik1,T,n);
cout<<endl;
wypiszZnaki(plik1);
cout<<endl;
wypiszZnaki2(plik1,T,n);
system("pause");
return 0;
}