Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Занулить строку 
:(
    Опции темы
Aaron
Дата 5.4.2006, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 1.12.2005
Где: Новосибирск

Репутация: нет
Всего: нет



Программа для ведения псевдобаз данных. (*.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

Это сообщение отредактировал(а) Aaron - 5.4.2006, 12:31
PM MAIL ICQ   Вверх
Romikgy
Дата 5.4.2006, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 9
Всего: 146



Код

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;    
 }

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


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Aaron
Дата 5.4.2006, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 1.12.2005
Где: Новосибирск

Репутация: нет
Всего: нет



Romikgy, дело несколько в другом.....

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

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

user posted image

так вот.....не получается нормально сделать, чтобы в exp каждый раз было новое значение строки exr. Либо, найти бы функцию, которая сразу считывает целую строку без символа конца......вот fscanf бы проканал...а со fgets такая вот дрянь......
PM MAIL ICQ   Вверх
Romikgy
Дата 5.4.2006, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 9
Всего: 146



Цитата(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;



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Aaron
Дата 5.4.2006, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 1.12.2005
Где: Новосибирск

Репутация: нет
Всего: нет



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;


о, спасибо большое, работает!))
PM MAIL ICQ   Вверх
Romikgy
Дата 5.4.2006, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 9
Всего: 146



не за что


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Aaron
Дата 6.4.2006, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 1.12.2005
Где: Новосибирск

Репутация: нет
Всего: нет



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

Код

#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 делать русскую писанину под дос)

Это сообщение отредактировал(а) Aaron - 6.4.2006, 14:34
PM MAIL ICQ   Вверх
Romikgy
Дата 6.4.2006, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 9
Всего: 146



Код

#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);    
}

сделай так


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Aaron
Дата 6.4.2006, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 1.12.2005
Где: Новосибирск

Репутация: нет
Всего: нет



ага, пасиб еще раз)
PM MAIL ICQ   Вверх
Romikgy
Дата 7.4.2006, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 9
Всего: 146



Aaron, еще раз пжлста


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0574 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.