Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > Занулить строку


Автор: Aaron 5.4.2006, 12:30
Программа для ведения псевдобаз данных. (*.txt)
Код

#include <conio.h>
#include <stdio.h>
#include <iostream.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <fstream.h>

void add(FILE *out, char sur[], char name[], char tel[], char fname[])
{
 if((out=fopen(fname, "at")) == NULL)
 {
  cout<<"Error. The file isn't found or doesn't exist.";
  return;
 }

 cout<<endl<<"Enter your surname: ";
 cin>>sur;
 cout<<"Enter your name: ";
 cin>>name;
 cout<<"Enter your telephone number: ";
 cin>>tel;
 
 fprintf(out, "\n%s %s %s", sur, name, tel);
 cout<<endl<<"The information is added."<<endl;
 fclose(out);
 getch();
 return;
}

void search(FILE *in, char fname[])
{
 char surf[20];
 char sur[40];
 int n=0;

 if((in=fopen(fname, "rt")) == NULL)
 {
  cout<<"Error. The file isn't found or doesn't exist.";
  return;
 }

 cout<<endl<<"Enter surname: ";
 cin>>surf;

 if((surf[0] >='a' && surf[0] <='z')||(surf[0] >='à' && surf[0] <='ÿ'))
 {
  surf[0] -=32;
 }

 cout<<endl;
 while(!feof(in))
 {
  fscanf(in, "%s", sur);

  if(!strcmp(sur,surf))
  {
   fgets(sur,sizeof(sur),in);
   cout<<surf<<sur;
   n++;
  }
 }
 if(n) cout<<endl<<endl<<n<<" record(s) are founded.";
 else cout<<"The record does not exist.";

 fclose(in);
 getch();
 return;
}

void del(FILE *in, FILE *out, char fname[])
{
 char del[40];
 char exr[40];
 char exp[40];
 int i=0;

 if((in=fopen(fname, "rt")) == NULL)
 {
  cout<<"Error. The file isn't found or doesn't exist.";
  return;
 }
 if((out=fopen(fname, "r+")) == NULL)
 {
  cout<<"Error. The file isn't found or doesn't exist.";
  return;
 }

 search(in, fname);
 cout<<endl<<endl<<"Enter record for removal:"<<endl;
 cin.get();
 cin.getline(del,sizeof(del));

 while(!feof(in))
 {
 exp[i]=0;
 exr[i]=0;
 fgets(exr,40,in);
 cout<<"TEST EXR"<<exr<<endl;
 cout<<"TEST EXP"<<exp;
 while(exr[i+1]!=NULL)
 {
  exp[i]=exr[i];
  i++;
 }
 cout<<exp<<" - "<<strlen(exp)<<" ";
 if(!strcmp(del,exp))cout<<"TRUE"<<endl<<endl;
 else cout<<"FAIL"<<endl<<endl;
 }

}

void shutd(char key)
{
 cout<<endl<<"Are you sure? (Y/N)";
 key=toupper(getch());
 if(key=='Y')exit(1);
 if(key=='N');
}

void menu(FILE *in, FILE *out, char fname[])
{
 char sur[20];
 char name[20];
 char tel[10];
 char key;
 int cod;

 clrscr();

 cout<<"The program for service of databases."<<endl<<endl;
 cout<<"1. Add a new record"<<endl;
 cout<<"2. Edit a record"<<endl;
 cout<<"3. Search a record"<<endl;
 cout<<"4. Delete a record"<<endl;
 cout<<"5. Exit"<<endl<<endl;
 cout<<"Enter the number of action: ";
 cin>>cod;

 switch(cod)
 {
  case 1: add(out, sur, name, tel, fname); break;
  //case 2: edit; break;
  case 3: search(in, fname); break;
  case 4: del(in, out, fname); break;
  case 5: shutd(key); break;
 }
}

void main()
{
 char fname[40];
 FILE *in;
 FILE *out;

 clrscr();

 cout<<"The program for service of databases."<<endl;
 cout<<"Enter a path to a file, please (ex: f:\\lab\\db.txt):"<<endl;
 cin.getline(fname,sizeof(fname));

 if((in=fopen(fname, "rt")) == NULL)
 {
  while((in=fopen(fname, "rt")) == NULL)
  {
   cout<<endl<<"Error. The file isn't found or doesn't exist."<<endl;
   cout<<"Enter a CORRECT path to a file, please:"<<endl;
   cin.getline(fname,sizeof(fname));
  }
 }
 menu(in,out,fname);
}


Проблема в этой функции (до конца недописана, cout'ы в целях тестирования):

Код

void del(FILE *in, FILE *out, char fname[])
{
 char del[40];
 char exr[40];
 char exp[40];
 int i=0;

 if((in=fopen(fname, "rt")) == NULL)
 {
  cout<<"Error. The file isn't found or doesn't exist.";
  return;
 }
 if((out=fopen(fname, "r+")) == NULL)
 {
  cout<<"Error. The file isn't found or doesn't exist.";
  return;
 }

 search(in, fname);
 cout<<endl<<endl<<"Enter record for removal:"<<endl;
 cin.get();
 cin.getline(del,sizeof(del));

 while(!feof(in))
 {
 exp[i]=0;
 exr[i]=0;
 fgets(exr,40,in);
 cout<<"TEST EXR"<<exr<<endl;
 cout<<"TEST EXP"<<exp;
 while(exr[i+1]!=NULL)
 {
  exp[i]=exr[i];
  i++;
 }
 cout<<exp<<" - "<<strlen(exp)<<" ";
 if(!strcmp(del,exp))cout<<"TRUE"<<endl<<endl;
 else cout<<"FAIL"<<endl<<endl;
 }

}


после первой обработанной строки exp ее значение остается тем же, exr считывает нормально. Никакими обнулениями exp зачистить не удается (остается старое значение), единственное - если перед началом вложенного while поставить i=0, то зануляется первый символ, берется первый символ из новой строки, остальное остается из старой.....так, вот, кто нибудь знает, как exp нормально занулить? Третий день над этим сижу... smile

Автор: Romikgy 5.4.2006, 13:11
Код

while(!feof(in))    
 {    
 
 fgets(exr,40,in);    
 cout<<"TEST EXR"<<exr<<endl;    
 cout<<"TEST EXP"<<exp;    
strcpy(exp,exr);    
 cout<<exp<<" - "<<strlen(exp)<<" ";    
 if(!strcmp(del,exp))cout<<"TRUE"<<endl<<endl;    
 else cout<<"FAIL"<<endl<<endl;    
 }

так не проканает?

Автор: Aaron 5.4.2006, 13:33
Romikgy, дело несколько в другом.....

Запланировал работу ф-ии следующим образом:

Загружается первая строка из файла. Т.к. строка состоит максимум из трех слов, а в дальнейшем требуется эта строка, но БЕЗ символа конца строки (иначе сравнение del-exp не проходит. del - строка введенная мной, которую нужно удалить. Она ищет похожую строку exp, и, если находит, то удаляет). Т.е. используя fgets приходится вручную обрезать последний символ пользуясь двумя массивами, исходным - exr, и конечным, без последнего символа - exp. Так вот, этот массив, первый раз сохранив свое значение (значение exr без последнего символа) в дальнейшем сохраняет его же. В результате получается следующее:

user posted image

так вот.....не получается нормально сделать, чтобы в exp каждый раз было новое значение строки exr. Либо, найти бы функцию, которая сразу считывает целую строку без символа конца......вот fscanf бы проканал...а со fgets такая вот дрянь......

Автор: Romikgy 5.4.2006, 14:35
Цитата(Aaron @ 5.4.2006, 12:33 Найти цитируемый пост)
fscanf

дык пользуй
Код

fgets(exr,40,in);
int z=strlen(exr);
if (exr[z-1]==10 || exr[z-1]==13) exr[z-1]=0;
if (exr[z-2]==10 || exr[z-2]==13) exr[z-2]=0;

а так попробуй?
ксати зануление строки в твоем случае можно сделать так
Код

for (int j=0;j<40;j++) exp[j]=0;

Автор: Aaron 5.4.2006, 14:59
Romikgy,
Код

fgets(exr,40,in);    
int z=strlen(exr);    
if (exr[z-1]==10 || exr[z-1]==13) exr[z-1]=0;    
if (exr[z-2]==10 || exr[z-2]==13) exr[z-2]=0;


о, спасибо большое, работает!))

Автор: Romikgy 5.4.2006, 15:03
не за что

Автор: Aaron 6.4.2006, 13:14
Ок, теперь код программы полностью готов:

Код

#include <conio.h>
#include <stdio.h>
#include <iostream.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <fstream.h>

void add(FILE *out, char sur[], char name[], char tel[], char fname[])
{
 if((out=fopen(fname, "at")) == NULL)
 {
  cout<<"ЋиЁЎЄ . ” ©« ­Ґ ­ ©¤Ґ­ Ё«Ё ­Ґ бгйҐбвўгҐв.";
  return;
 }

 cout<<endl<<"‚ўҐ¤ЁвҐ д ¬Ё«Ёо: ";
 cin>>sur;
 cout<<"‚ўҐ¤ЁвҐ Ё¬п: ";
 cin>>name;
 cout<<"‚ўҐ¤ЁвҐ ­®¬Ґа вҐ«Ґд®­ : ";
 cin>>tel;
 
 fprintf(out, "\n%s %s %s", sur, name, tel);
 cout<<endl<<"‡ ЇЁбм ¤®Ў ў«Ґ­ ."<<endl;
 fclose(out);
 getch();
 return;
}

int search(FILE *in, char fname[])
{
 char surf[20];
 char sur[40];
 int n=0;

 if((in=fopen(fname, "rt")) == NULL)
 {
  cout<<"ЋиЁЎЄ . ” ©« ­Ґ ­ ©¤Ґ­ Ё«Ё ­Ґ бгйҐбвўгҐв.";
  return(0);
 }

 cout<<endl<<"‚ўҐ¤ЁвҐ д ¬Ё«Ёо: ";
 cin>>surf;

 if((surf[0] >='a' && surf[0] <='z')||(surf[0] >='а' && surf[0] <='я'))
 {
  surf[0] -=32;
 }

 cout<<endl;
 while(!feof(in))
 {
  fscanf(in, "%s", sur);

  if(!strcmp(sur,surf))
  {
   fgets(sur,sizeof(sur),in);
   cout<<surf<<sur;
   n++;
  }
 }
 if(n) cout<<endl<<endl<<"Ќ ©¤Ґ­® § ЇЁбҐ©: "<<n;
 else cout<<"‡ ЇЁбҐ© б д ¬Ё«ЁҐ© "<<surf<<" ­Ґ бгйҐбвўгҐв.";

 fclose(in);
 getch();
 return(n);
}

void del(FILE *in, char fname[])
{
 char del[40];
 char exr[40];
 char c;
 int i=0;
 int f=0;

 if((in=fopen(fname, "rt")) == NULL)
 {
  cout<<"ЋиЁЎЄ . ” ©« ­Ґ ­ ©¤Ґ­ Ё«Ё ­Ґ бгйҐбвўгҐв.";
  return;
 }

 int n=search(in, fname);
 if(n==0)return;

 cout<<endl<<endl<<"Џ®«­®бвмо ўўҐ¤ЁвҐ г¤ «пҐ¬го § ЇЁбм:"<<endl;
 cin.get();
 cin.getline(del,sizeof(del));
 ofstream tmp("tmp.txt");

 while(!feof(in))
 {
  exr[i]=0;
  fgets(exr,40,in);
  int z=strlen(exr);
  if (exr[z-1]==10 || exr[z-1]==13) exr[z-1]=0;    
  if (exr[z-2]==10 || exr[z-2]==13) exr[z-2]=0;
  if(!strcmp(del,exr)){f++; continue;}
  else tmp<<exr<<endl;
 }

 if(f==0)
 {
  cout<<endl<<"‚ўҐ¤Ґ­­ п ў ¬Ё § ЇЁбм ­Ґ бгйҐбвўгҐв.";
  getch();
  return;
 }
 tmp.close();
 ifstream tmd("tmp.txt");
 ofstream oct(fname);
 while(!tmd.eof())
 {
  tmd.getline(exr,sizeof(exr));
  if(exr[i]==NULL)continue;
  oct<<exr<<endl;
 }
 tmd.close();
 oct.close();
 cout<<"‡ ЇЁбм г¤ «Ґ­ .";
 getch();
 return;
}

void edit(FILE *in, char fname[])
{
 char del[40];
 char nst[40];
 char exr[40];
 char c;
 int i=0;
 int f=0;

 if((in=fopen(fname, "rt")) == NULL)
 {
  cout<<"ЋиЁЎЄ . ” ©« ­Ґ ­ ©¤Ґ­ Ё«Ё ­Ґ бгйҐбвўгҐв.";
  return;
 }

 int n=search(in, fname);
 if(n==0)return;

 cout<<endl<<endl<<"Џ®«­®бвмо ўўҐ¤ЁвҐ § ЇЁбм ¤«п аҐ¤ ЄвЁа®ў ­Ёп:"<<endl;
 cin.get();
 cin.getline(del,sizeof(del));
 cout<<endl<<endl<<"‚ўҐ¤ЁвҐ ­®ўл© ў аЁ ­в:"<<endl;
 cin.getline(nst,sizeof(nst));

 ofstream tmp("tmp.txt");

 while(!feof(in))
 {
  exr[i]=0;
  fgets(exr,40,in);
  int z=strlen(exr);
  if (exr[z-1]==10 || exr[z-1]==13) exr[z-1]=0;    
  if (exr[z-2]==10 || exr[z-2]==13) exr[z-2]=0;
  if(!strcmp(del,exr))
  {
   f++;
   tmp<<nst<<endl;
  }
  else tmp<<exr<<endl;
 }

 if(f==0)
 {
  cout<<endl<<"‚ўҐ¤Ґ­­ п ў ¬Ё § ЇЁбм ­Ґ бгйҐбвўгҐв.";
  return;
 }
 tmp.close();
 ifstream tmd("tmp.txt");
 ofstream oct(fname);
 while(!tmd.eof())
 {
  tmd.getline(exr,sizeof(exr));
  if(exr[i]==NULL)continue;
  oct<<exr<<endl;
 }
 tmd.close();
 oct.close();
 cout<<endl<<"‡ ЇЁбм Ё§¬Ґ­Ґ­ .";
 getch();
 return;
}

void shutd(char key)
{
 cout<<endl<<"‚л гўҐаҐ­л? (Y/N)";
 while(1)
 {
  key=toupper(getch());
  if(key=='Y')exit(1);
  if(key=='N');
  if(key!='Y' && key!='N')continue;
 }
}

void menu(FILE *in, FILE *out, char fname[])
{
 char sur[20];
 char name[20];
 char tel[10];
 char key;
 int cod;

 clrscr();

 cout<<"Џа®Ја ¬¬  ¤«п а Ў®вл б Ў § ¬Ё ¤ ­­ле."<<endl<<endl;
 cout<<"1. „®Ў ўЁвм § ЇЁбм"<<endl;
 cout<<"2. ђҐ¤ ЄвЁа®ў вм § ЇЁбм"<<endl;
 cout<<"3. ?бЄ вм § ЇЁбм"<<endl;
 cout<<"4. “¤ «Ёвм § ЇЁбм"<<endl;
 cout<<"5. ‚л室"<<endl<<endl;
 cout<<"‚ўҐ¤ЁвҐ ­®¬Ґа ¤Ґ©бвўЁп: ";
 cin>>cod;

 switch(cod)
 {
  case 1: add(out, sur, name, tel, fname); break;
  case 2: edit(in,fname); break;
  case 3: search(in, fname); break;
  case 4: del(in, fname); break;
  case 5: shutd(key); break;
 }
}

void main()
{
 char fname[40];
 FILE *in;
 FILE *out;

 clrscr();

 cout<<"Џа®Ја ¬¬  ¤«п а Ў®вл б Ў § ¬Ё ¤ ­­ле."<<endl;
 cout<<"‚ўҐ¤ЁвҐ Їгвм Є д ©«г Ў §л (Є ЇаЁ¬Ґаг: f:\\lab\\db.txt):"<<endl<<endl;
 cin.getline(fname,sizeof(fname));

 if((in=fopen(fname, "rt")) == NULL)
 {
  while((in=fopen(fname, "rt")) == NULL)
  {
   cout<<endl<<"ЋиЁЎЄ . ” ©« ­Ґ ­ ©¤Ґ­ Ё«Ё ­Ґ бгйҐбвўгҐв."<<endl;
   cout<<"‚ўҐ¤ЁвҐ Їа ўЁ«м­л© Їгвм Є д ©«г Ў §л:"<<endl;
   cin.getline(fname,sizeof(fname));
  }
 }
 menu(in,out,fname);
}


осталась лишь одна небольшая проблемка (либо я туплю, либо так сделать нельзя...в общем)...нужно, к примеру, после окончания работы ф-ии del (edit, search и так далее) вызвать ф-ию menu. Т.е. стандартно говоря, после выполнения операции вернуться к главному меню программы. Т.к. функция menu определена после всех рабочих ф-ий, из них вызвать не получается, нужен прототип. Ставить меню на первое место так же не получится, в ней свич на все рабочие ф-ии, которые так же будут просить прототайп. Замкнутый круг.....в том вопрос. Возможно ли сделать вызов menu функции из других? Думаю, возможно, просто я туплю....тем не менее, в хелпе ничего не понял....прототип все равно требует...
Добавлено @ 13:15
на кодировку внимания не обращайте, дос-кодировка, единственный нормальный способ борландом 3.11 делать русскую писанину под дос)

Автор: Romikgy 6.4.2006, 15:34
Код

#include <conio.h>    
#include <stdio.h>    
#include <iostream.h>    
#include <string.h>    
#include <ctype.h>    
#include <stdlib.h>    
#include <fstream.h>    
void menu(FILE *in, FILE *out, char fname[]);

void add(FILE *out, char sur[], char name[], char tel[], char fname[])    
{    
 if((out=fopen(fname, "at")) == NULL)    
 {    
  cout<<"ЋиЁЎЄ . ” ©« Ґ  ©¤Ґ Ё«Ё Ґ бгйҐбвўгҐв.";    
  return;    
 }    
 cout<<endl<<"‚ўҐ¤ЁвҐ д ¬Ё«Ёо: ";    
 cin>>sur;    
 cout<<"‚ўҐ¤ЁвҐ Ё¬п: ";    
 cin>>name;    
 cout<<"‚ўҐ¤ЁвҐ ®¬Ґа вҐ«Ґд® : ";    
 cin>>tel;    
    
 fprintf(out, "\n%s %s %s", sur, name, tel);    
 cout<<endl<<"‡ ЇЁбм ¤®Ў ў«Ґ ."<<endl;    
 fclose(out);    
 getch();    
 return;    
}    
int search(FILE *in, char fname[])    
{    
 char surf[20];    
 char sur[40];    
 int n=0;    
 if((in=fopen(fname, "rt")) == NULL)    
 {    
  cout<<"ЋиЁЎЄ . ” ©« Ґ  ©¤Ґ Ё«Ё Ґ бгйҐбвўгҐв.";    
  return(0);    
 }    
 cout<<endl<<"‚ўҐ¤ЁвҐ д ¬Ё«Ёо: ";    
 cin>>surf;    
 if((surf[0] >='a' && surf[0] <='z')||(surf[0] >='а' && surf[0] <='я'))    
 {    
  surf[0] -=32;    
 }    
 cout<<endl;    
 while(!feof(in))    
 {    
  fscanf(in, "%s", sur);    
  if(!strcmp(sur,surf))    
  {    
   fgets(sur,sizeof(sur),in);    
   cout<<surf<<sur;    
   n++;    
  }    
 }    
 if(n) cout<<endl<<endl<<"Ќ ©¤Ґ® § ЇЁбҐ©: "<<n;    
 else cout<<"‡ ЇЁбҐ© б д ¬Ё«ЁҐ© "<<surf<<" Ґ бгйҐбвўгҐв.";    
 fclose(in);    
 getch();    
 return(n);    
}    
void del(FILE *in, char fname[])    
{    
 char del[40];    
 char exr[40];    
 char c;    
 int i=0;    
 int f=0;    
 if((in=fopen(fname, "rt")) == NULL)    
 {    
  cout<<"ЋиЁЎЄ . ” ©« Ґ  ©¤Ґ Ё«Ё Ґ бгйҐбвўгҐв.";    
  return;    
 }    
 int n=search(in, fname);    
 if(n==0)return;    
 cout<<endl<<endl<<"Џ®«®бвмо ўўҐ¤ЁвҐ г¤ «пҐ¬го § ЇЁбм:"<<endl;    
 cin.get();    
 cin.getline(del,sizeof(del));    
 ofstream tmp("tmp.txt");    
 while(!feof(in))    
 {    
  exr[i]=0;    
  fgets(exr,40,in);    
  int z=strlen(exr);    
  if (exr[z-1]==10 || exr[z-1]==13) exr[z-1]=0;     
  if (exr[z-2]==10 || exr[z-2]==13) exr[z-2]=0;    
  if(!strcmp(del,exr)){f++; continue;}    
  else tmp<<exr<<endl;    
 }    
 if(f==0)    
 {    
  cout<<endl<<"‚ўҐ¤Ґ п ў ¬Ё § ЇЁбм Ґ бгйҐбвўгҐв.";    
  getch();
 //вызывай здесь 
menu(...)    ;/// с нужными те параметрами
  return;    
 }    
 tmp.close();    
 ifstream tmd("tmp.txt");    
 ofstream oct(fname);    
 while(!tmd.eof())    
 {    
  tmd.getline(exr,sizeof(exr));    
  if(exr[i]==NULL)continue;    
  oct<<exr<<endl;    
 }    
 tmd.close();    
 oct.close();    
 cout<<"‡ ЇЁбм г¤ «Ґ .";    
 getch();    
 return;    
}    
void edit(FILE *in, char fname[])    
{    
 char del[40];    
 char nst[40];    
 char exr[40];    
 char c;    
 int i=0;    
 int f=0;    
 if((in=fopen(fname, "rt")) == NULL)    
 {    
  cout<<"ЋиЁЎЄ . ” ©« Ґ  ©¤Ґ Ё«Ё Ґ бгйҐбвўгҐв.";    
  return;    
 }    
 int n=search(in, fname);    
 if(n==0)return;    
 cout<<endl<<endl<<"Џ®«®бвмо ўўҐ¤ЁвҐ § ЇЁбм ¤«п аҐ¤ ЄвЁа®ў Ёп:"<<endl;    
 cin.get();    
 cin.getline(del,sizeof(del));    
 cout<<endl<<endl<<"‚ўҐ¤ЁвҐ ®ўл© ў аЁ в:"<<endl;    
 cin.getline(nst,sizeof(nst));    
 ofstream tmp("tmp.txt");    
 while(!feof(in))    
 {    
  exr[i]=0;    
  fgets(exr,40,in);    
  int z=strlen(exr);    
  if (exr[z-1]==10 || exr[z-1]==13) exr[z-1]=0;     
  if (exr[z-2]==10 || exr[z-2]==13) exr[z-2]=0;    
  if(!strcmp(del,exr))    
  {    
   f++;    
   tmp<<nst<<endl;    
  }    
  else tmp<<exr<<endl;    
 }    
 if(f==0)    
 {    
  cout<<endl<<"‚ўҐ¤Ґ п ў ¬Ё § ЇЁбм Ґ бгйҐбвўгҐв.";    
  return;    
 }    
 tmp.close();    
 ifstream tmd("tmp.txt");    
 ofstream oct(fname);    
 while(!tmd.eof())    
 {    
  tmd.getline(exr,sizeof(exr));    
  if(exr[i]==NULL)continue;    
  oct<<exr<<endl;    
 }    
 tmd.close();    
 oct.close();    
 cout<<endl<<"‡ ЇЁбм Ё§¬ҐҐ .";    
 getch();    
 return;    
}    
void shutd(char key)    
{    
 cout<<endl<<"‚л гўҐаҐл? (Y/N)";    
 while(1)    
 {    
  key=toupper(getch());    
  if(key=='Y')exit(1);    
  if(key=='N');    
  if(key!='Y' && key!='N')continue;    
 }    
}    
void menu(FILE *in, FILE *out, char fname[])    
{    
 char sur[20];    
 char name[20];    
 char tel[10];    
 char key;    
 int cod;    
 clrscr();    
 cout<<"Џа®Ја ¬¬  ¤«п а Ў®вл б Ў § ¬Ё ¤ ле."<<endl<<endl;    
 cout<<"1. „®Ў ўЁвм § ЇЁбм"<<endl;    
 cout<<"2. ђҐ¤ ЄвЁа®ў вм § ЇЁбм"<<endl;    
 cout<<"3. ?бЄ вм § ЇЁбм"<<endl;    
 cout<<"4. “¤ «Ёвм § ЇЁбм"<<endl;    
 cout<<"5. ‚л室"<<endl<<endl;    
 cout<<"‚ўҐ¤ЁвҐ ®¬Ґа ¤Ґ©бвўЁп: ";    
 cin>>cod;    
 switch(cod)    
 {    
  case 1: add(out, sur, name, tel, fname); break;    
  case 2: edit(in,fname); break;    
  case 3: search(in, fname); break;    
  case 4: del(in, fname); break;    
  case 5: shutd(key); break;    
 }    
}    
void main()    
{    
 char fname[40];    
 FILE *in;    
 FILE *out;    
 clrscr();    
 cout<<"Џа®Ја ¬¬  ¤«п а Ў®вл б Ў § ¬Ё ¤ ле."<<endl;    
 cout<<"‚ўҐ¤ЁвҐ Їгвм Є д ©«г Ў §л (Є ЇаЁ¬Ґаг: f:\\lab\\db.txt):"<<endl<<endl;    
 cin.getline(fname,sizeof(fname));    
 if((in=fopen(fname, "rt")) == NULL)    
 {    
  while((in=fopen(fname, "rt")) == NULL)    
  {    
   cout<<endl<<"ЋиЁЎЄ . ” ©« Ґ  ©¤Ґ Ё«Ё Ґ бгйҐбвўгҐв."<<endl;    
   cout<<"‚ўҐ¤ЁвҐ Їа ўЁ«мл© Їгвм Є д ©«г Ў §л:"<<endl;    
   cin.getline(fname,sizeof(fname));    
  }    
 }    
 menu(in,out,fname);    
}

сделай так

Автор: Aaron 6.4.2006, 17:15
ага, пасиб еще раз)

Автор: Romikgy 7.4.2006, 09:01
Aaron, еще раз пжлста

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)