Ужо не могу...и так и эдак пробовал, но всё равно вылетает и при вводе и при выводе...Подскажите в чем дело плиз
Код:
#include <iostream>
/*
Структура TRAIN с полями:ok
- название пункта назначения;ok
- номер поезда;ok
- время отправления.
Действия с файлом структур:
- сортировка записей в файле по возрастанию времени отправ- - ления поездов и его вывод на экран компьютера;
- определение и вывод на экран записей, в которых пункт назна-
чения совпадает с названием вводимым с клавиатуры, либо
сообщения об отсутствии таковых.
*/
#include <windows.h>
#include <conio.h>
using namespace std;
typedef struct TRAIN {
char *name;
int nomer;
int time[2];
} TRAIN, *PTRAIN, *LPTRAIN;
bool ReadBD(char *fPath, PTRAIN pTRAIN);
bool WrieBD(char *fPath, PTRAIN pTRAIN);
void p1();
void p2();
void main()
{
cout<<"\tMenu\r\n";
cout<<"1 - zapis' dannih v fail\r\n";
cout<<"2 - chtenie iz fila\r\n";
cout<<"Dlya vihoda nazhmite luboi simvol\r\n";
int key;
cin>>key;
bool repeat = false;
switch(key)
{
case 1:repeat = true;p1();break;
case 2:repeat = true;p2();break;
default : break;
}
if(repeat)
main();
}
bool ReadBD(char *fPath, PTRAIN pTRAIN)
{
FILE *f;
fscanf(f,"%s",pTRAIN->name);
fscanf(f,"%i",&pTRAIN->nomer);
for(int i=0;i<2;i++)
fscanf(f,"%i ",pTRAIN->time[i]);
fclose(f);
return 0;
}
bool WrieBD(char *fPath, PTRAIN pTRAIN)
{
FILE *f;
fprintf(f,"%s\r\n",pTRAIN->name);
fprintf(f,"%i\r\n",pTRAIN->nomer);
for(int i=0;i<2;i++)
fprintf(f," %i\r\n",pTRAIN->time[i]);
fclose(f);
return 0;
}
void p1()
{
cout<<"Zapis' structuri v file\r\n";
PTRAIN pTRAIN = (PTRAIN)malloc(sizeof(TRAIN));
pTRAIN->name = (char *)malloc(MAX_PATH);
char *chBuf = (char *)malloc(MAX_PATH);
cout<<"Vvedite punkt naznachenija: "<<endl;
cin>>pTRAIN->name;
cout<<"Vvedite Nomer poezda : "<<endl;
cin>>pTRAIN->nomer;
cout<<"Vvedite vremja cherez probel : "<<endl;
for(int i=0;i<2;i++)
cin>>pTRAIN->time[i];
cout<<"Vvod okonchen\r\n";
if(!WrieBD("C:\\BD.txt",pTRAIN))
cout<<"Oshibka zapisi fila %s\r\n","C:\\BD.txt";
free((void *)pTRAIN->name);
free((void *)pTRAIN->nomer);
for(i=0;i<2;i++)
free((void *)pTRAIN->time[i]);
free((void *)pTRAIN);
free((void *)chBuf);
}
void p2()
{
printf("Chtenie structuri iz fila\r\n");
PTRAIN pTRAIN = (PTRAIN)malloc(sizeof(TRAIN));
pTRAIN->name = (char *)malloc(MAX_PATH);
if(!ReadBD("C:\\BD.txt",pTRAIN))
printf("Oshibka chteniya fila %s\r\n","C:\\BD.txt");
else
{
printf("Chtenie yspeshno. prosmotr structuri\r\n");
printf("Punkt naznachenija : %s\r\n",pTRAIN->name);
printf("Nomer poezda : %i\r\n",pTRAIN->nomer);
for(int k=0;k<2;k++)
printf("Vremjz otbitija : %i\r\n",pTRAIN->time);
}
}