Потоки
От: Mozzart Беларусь  
Дата: 22.03.06 15:50
Оценка:
Подскажите плз, как в функции Search_by_Yahr првильно вывести содержимое файла и вооще как избаыиться от гимора с переполнением буфера (мне так кажеться там ошибка) и выводом "лишнего"
В проге по нажатию "а" добавляются данные в файл. по нажатию "Y" выводится файл и осущ. поиск по году
#include<iostream.h>
#include<fstream.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>

#define M 1
#define FALSE 0
#define TRUE 1

int god;
int c=0;
char imya[10];

class Data
{
public:
int Yahr;
int Phone;
char Name[10];

void Vvod(char*);
void Search_by_Yahr(char*);
void Search_by_Name(char*);
};
Data a[M];
void Data::Vvod(char* name)
{
ofstream f(name,ios::out | ios::app );
for(int i=0;i<M;i++)
{
cout<<"Enter Yahr"<<endl;
cin>>a[i].Yahr;
fflush(stdin);
cout<<"Enter the phone number"<<endl;
cin>>a[i].Phone;
fflush(stdin);
cout<<"Enter the Name"<<endl;
cin>>a[i].Name;
fflush(stdin);
f<<a[i].Yahr<<endl<<a[i].Phone<<endl<<a[i].Name<<flush<<endl;
cout<<"____________________________________________________"<<endl;
}
f.close();
}
void Data::Search_by_Yahr(char* name)
{
ifstream f(name,ios::in);
int h=0;
// f.seekg(0,ios::beg);
while (!f.eof())
{
f>>a[h].Yahr;//f.gcount();
f>>a[h].Phone;//f.gcount();
f>>a[h].Name;//f.gcount();
fflush(stdin);//f.gcount();
cout<<a[h].Yahr<<flush<<" "<<flush;
cout<<a[h].Phone<<flush<<" ";
cout<<a[h].Name<<flush<<endl;
h++;fflush(stdout);
}
cout<<"Vvedite god "<<endl;
cin>>god;
for(int k=0;k<h-1;k++)
{
if ( a[k].Yahr == god ) c++;
}
cout<<"In the "<<god<<" connect "<<c<<" phone"<<endl;
f.close();
}
void Data::Search_by_Name(char* name)
{
fstream f(name,ios::in);
cout<<"Vvedite imya "<<endl;
cin>>imya;
int p=0;
while(!f.eof())
{
f>>a[p].Yahr>>a[p].Phone>>a[p].Name,p++;
}
for(int k=0;k<p;k++)
{
if (!strcmp(imya,a[k].Name))
cout<<"Phone "<<a[k].Phone<<endl;
}

f.close();
}

main()
{
Data b;
int done=FALSE;
char c;
while (!done)
{
cout<<"A)Add to File Y)Search by Yahr\nN)Search by Name\nE)xit"<<endl;
c=getch();
switch (toupper(c))
{
case 'A':
b.Vvod("Data.txt");
break;
case 'Y':
b.Search_by_Yahr("Data.txt");
break;
case 'N':
b.Search_by_Name("Data.txt");
break;
case 'E':
done=TRUE;
break;
}
}
return 0;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.