Ferget спасибо большое за помощь разобрался ))))
Только сделал поиск через strstr!!!
кому нужно код:
читать дальше »
Код:

файл kniga.h
#ifndef KNIGA_H
#define KNIGA_H
class Tkniga
{
static int num;
char name[80];
long phone;
char addres[80];
char file[20];
public:
Tkniga();
void Print() const;
void Add();
//void Delete(Tkniga f);
void Search();
};
#endif
файл opis.cpp
#include "kniga.h"
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
int Tkniga::num = 0;
Tkniga::Tkniga()
{
strcpy(name, "None");
phone = 0;
strcpy(addres, "None");
}
void Tkniga::Print()const
{
ifstream fin("database.txt", ios_base::in);
char ch;
while(fin.get(ch) )
cout << ch;
/*cout << "Name: " << name << endl
<< "Addres: " << addres << endl
<< "Phone: " << phone << endl;*/
}
void Tkniga::Add()
{
num++;
ofstream fout("database.txt", ios_base::out|ios_base::app);
cout << "Enter name: ";
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin.getline(name, 80);
cout << "Enter addres: ";
cin.getline(addres, 80);
cout << "Enter phone: ";
cin >> phone;
fout << num << ": " << "name: " << name << "; Addres: " << addres << "; Phone: " << phone << endl;
}
void Tkniga::Search() // ------ вот тут траблы не могу вьехать как передать файл для поиска
{
ifstream fin("database.txt", ios_base::in);
cout << "enter name: ";
char Name[80];
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin.getline(Name, 80);
//делаете временную переменную
char forsearch[80];
//считываете файл построчно
while(!fin.eof())
{
fin.getline(forsearch,80);
//здесь сравниваете forsearch и Name
if(strstr(forsearch, Name) != NULL)
{
cout << forsearch << endl;
}
}
}
файл usekniga.cpp
#include "kniga.h"
#include <iostream>
using namespace std;
int main()
{
Tkniga abon;
char ch;
do
{
cout << "Menu\n";
cout << "1) Dlya vvoda abonenta\n"
<< "2) Dlya prosmotra vsex abonentov\n"
<< "3) Dlya poiska po imeni\n";
cin >> ch;
}while(ch != '1' && ch != '2' && ch != '3');
if(ch == '1')
{
abon.Add();
}
if(ch == '2')
{
abon.Print();
}
if(ch == '3')
abon.Search();
return 0;
}
И такой ещё вопрос у меня в классе реализована статическая переменная num она при работе программы добавляет число в новую строку. Вопрос в том, что эта переменная сбивается после закрытия программы и начинает всё с единицы писать. Можно ли сделать так, чтоб она считывала последний результат? Допустим последний абонент номер 5 и при добавлении она пишет уже 6 абонент.