Napisać funkcje:
void szukaj(const char nazwaPlikWe[], const char nazwaPlikWy[],const char slowo[])
której zadaniem jest znalezienie wszystkich wierszy w pliku, które zawierają szukane
słowo. Wszystkie wiersze, które zawierają słowo powinny zostać zapisane w
pliku wynikowym wraz z nr wiersza (z pierwszego pliku). Nazwa pierwszego pliku
zapamiętana jest w parametrze nazwaPlikWe, nazwa pliku wynikowego podana
jest w parametrze nazwaPlikWy, natomiast szukane słowo w parametrze słowo.
Przykład - plik wejściowy:
Ala ma jutro egzamin z biologii.
Jan myje auto.
Eh, jutro kolejny egzamin.
Nie lubie polityki.
Jeżeli szukanym słowem byłoby ”egzamin”, to plik wynikowy powinien wyglądać
następująco:
1: Ala ma jutro egzamin z biologii.
3: Eh, jutro kolejny egzamin.
#include <iostream>
#include <fstream>
using namespace std;
void szukaj(const char nazwaPlikWe[], const char nazwaPlikWy[],const char slowo[]);
int main()
{
szukaj("zad2plik.txt","zad2wynik.txt","egzamin");
cin.get();
return 0;
}
void szukaj(const char nazwaPlikWe[], const char nazwaPlikWy[],const char slowo[])
{
int w=1;
string wiersz;
ifstream plik1;
ofstream plik2;
plik1.open(nazwaPlikWe);
plik2.open(nazwaPlikWy,ios::app); //ios::app sluzy do dopisywania do danego pliku jesli juz istnieje
// w tym programie jest on zbedny, ale warto wiedziec jak dziala..
if(plik1.is_open())
{
while(!plik1.eof())
{
getline(plik1,wiersz);
if((wiersz.find(slowo))!=string::npos) //string::npos pojawia sie gdy nie ma szukanego slowa
{
cout<<w<<": "<<wiersz<<endl;
plik2<<w<<": "<<wiersz<<endl;
}
w++;
}
}
else cout<<"Problem z plikiem. Aplikacja zakonczy dzialanie."<<endl;
plik1.close();
plik2.close();
}
Offline