"Słownik" - dodanie funkcji wyszukiwania po fragmencie wyrazu

0

Witam.
Mam taki "prowizoryczny" słownik. Działa on w sposób, że do stworzonego przez nas pliku [i]data.dat[/i] dodajemy przez program wyraz i jego tłumaczenie. Możliwe jest obejrzenie całej bazy dodanych wyrazów. Oto kod programu:

#include <iostream.h>
#include <fstream.h>
#include <string.h>
#include <iomanip.h>
#include <conio.h>

class slownik{
	char pl[20],eng[20];
	public:
	void getdata();
	void showdata();
	char *getpl(){ return pl; }
	char *geteng(){ return eng; }
};

void slownik :: getdata(){
	cout<<"\nWyraz po polsku : ";
	cin>>pl;
	cout<<"Wyraz po angielsku : ";
	cin>>eng;
}

void slownik :: showdata(){
	cout<<"\n";
	cout<<setw(20)<<pl;
	cout<<setw(20)<<eng;
}


int main(){
	slownik rec;
	fstream file;
	file.open("data.dat", ios::ate | ios::in | ios::out | ios::binary);
	char ch,pl[20],eng[20];
	int wybor,found=0;
	while(1){
		cout<<"\n*****SLOWNIK*****\n";
		cout<<"1) Polski - Angielski\n";
		cout<<"2) Angielsko - Polski\n";
		cout<<"3) Dodaj nowy wyraz\n";
		cout<<"4) Wyswietl cala baze\n";
		cout<<"5) Wyjdz z programu\n";
		cout<<"Wybierz wlasciwa opcje : ";
		cin>>wybor;
		switch(wybor){
           	case 1 :
				 cout<<"\n\nNapisz wyraz : ";
				 cin>>pl;
				 file.seekg(0,ios::beg);
				 found=0;
				 while(file.read((char *) &rec, sizeof(rec)))
				 {
					if(strcmp(pl,rec.getpl())==0)
					{
						found=1;
						rec.showdata();
					}
				 }
				 file.clear();
				 if(found==0)
					cout<<"\n\n---Wyrazu nie znaleziono---\n";
				 getch();
				 break;
				 
			case 2 :
				 cout<<"\n\nWpisz wyraz : ";
				 cin>>eng;
				 file.seekg(0,ios::beg);
				 found=0;
				 while(file.read((char *) &rec, sizeof(rec)))
				 {
					if(strcmp(eng,rec.geteng())==0)
					{
						found=1;
						rec.showdata();
					}
				 }
				 file.clear();
				 if(found==0)
					cout<<"\n\n---Wyrazu nie znaleziono---\n";
				 getch();
				 break;

			case 3 :
				 rec.getdata();
				 cin.get(ch);
				 file.write((char *) &rec, sizeof(rec));
				 break;

			case 4 :
				 file.seekg(0,ios::beg);
				 cout<<"\n\nCala Baza wyrazow\n";
				 while(file){
					file.read((char *) &rec, sizeof(rec));
					if(!file.eof())
						rec.showdata();
				 }
				 file.clear();
				 getch();
				 break;
		    case 5 : goto out;
		}
	}
out:
file.close();
}
```cpp
 
Jeżeli chodzi o działanie programu nie mam zastrzeżeń, ale chciałbym dodać jeszcze jedną funkcję, a mianowicie wyszukiwanie po fragmencie wyrazu. Chciałem użyć do tego funkcji strstr:
```cpp
/* strstr example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] ="This is a simple string";
  char * pch;
  pch = strstr (str,"simple");
  strncpy (pch,"sample",6);
  puts (str);
  return 0;
}

Nie jestem pewien jak to zrobić. Mógłby mi ktoś w tym pomóc?

Pozdrawiam, Świeżak.
0

const char * strstr ( const char * str1, const char * str2 );
zwraca wskaźnik do pierwszego wystąpienia str2 w str1, więc

if (strstr(str, someTxt) != NULL) cout << someTxt << " exists in " << str << endl;

i na marginesie zamiast \n użyj endl

1 użytkowników online, w tym zalogowanych: 0, gości: 1