내 전체 코드는 pastebin입니다. 기차 데이터베이스가 있으며 사용자가 티켓을 예약 할 기차 번호를 입력합니다. 함수 updt_tick은 열차 이름, 출발지 및 목적지 값을 승객의 예약 객체로 복사해야합니다. 그러나 문제는 5 번째 문자 이후 만 복사된다는 것입니다. updt_tick 함수는 87 줄에 있습니다. 함수의 코드 샘플은 다음과 같습니다. 사용자가 입력 한 datagse. 코드 블럭이 중요한 경우 사용합니다.strcpy는 sth 문자를 이후에 복사하고 있습니다. 이 오류를 해결하는 방법?
void updt_tick()
{
fstream f;
f.open("train.dat",ios::in | ios::binary);
while(f.read((char*)&t,sizeof(t)))
{
if (tno==t.tno)
{
strcpy(bp,t.source);
strcpy(dest,t.dest);
strcpy(tname,t.tname);
amt=SeatNum*t.PerSeatFare;
break;
}
}
f.close();
}
기차 클래스입니다 ->
class train
{
public:
int tno;
char tname[100];
char source[100];
char dest[100];
int PerSeatFare;
public:
void getdetail()
{
cout<<"Enter the details as follows\n";
cout<<"Train no:";
cin>>tno;
cin.ignore();
cout<<"Train name:";
gets(tname);
cout<<"Train Source Station:";
gets(source);
cout<<"Tarin Destination Station:";
gets(dest);
cout<<"Fare per seat in train :";
cin>>PerSeatFare;
}
void showdetail()
{
cout<<tno<<"\t"<<tname<<"\t"<<source<<"\t"<<dest<<"\t";
cout<<PerSeatFare;
}
}t;
RESERV 클래스는 -> `
class reserv //Assume that cust select train according to his source and destination.
{
public:
int pnr;
int tno;
char tname[100];
char pnames[10][100];
int ages[10];
int SeatNum;
int i;
int d,m,y;
float amt;
char bp[100],dest[100];
void updt_tick()
{
fstream f;
f.open("train.dat",ios::in | ios::binary);
while(f.read((char*)&t,sizeof(t)))
{
if (tno==t.tno)
{
strcpy(bp,t.source);
strcpy(dest,t.dest);
strcpy(tname,t.tname);
amt=SeatNum*t.PerSeatFare;
break;
}
}
f.close();
}
public:
void getresdet()
{
cout<<"Enter the details as follows\n";
cout<<"Train no:";
cin>>tno;
cout<<"No of seats required:";
cin>>SeatNum;
cin.ignore();
for(i=0; i<SeatNum ; i++)
{
cout<<"Passenger name:";
gets(pnames[i]);
cout<<"Passenger age:";
cin>>ages[i];
cin.ignore();
}
cout<<"Date of travel:";
cin>>d>>m>>y;
cout<<"Details Accepted\n";
pnr=rand();
updt_tick();
}
void showresdet()
{
cout<<"Pnr no:"<<pnr;
cout<<"\nTrain no:"<<tno;
cout<<"\nTrain name:";
puts(tname);
cout<<"Boarding point:";
puts(bp);
cout<<"Destination pt:";
puts(dest);
cout<<"No of seats reserved:"<<SeatNum;
for(i=0; i<SeatNum; i++)
{
cout<<"Passenger name:";
puts(pnames[i]);
cout<<"Passenger age:"<<ages[i];
}
cout<<"\nDate of reservation:"<<d<<"-"<<m<<"-"<<y;
cout<<"\nYou must pay:"<<amt<<endl;
}
int getpnr()
{
return pnr;
}
};
그게't'입니까? –
우리는't','bp','tname' 또는'tno'가 무엇인지 알지 못합니다. [MCVE] (http://stackoverflow.com/help/mcve) –
을 제공하십시오. 이것을 'C++'및'string'으로 태그를 지정하십시오. 그것은'std :: string'을 의미합니다. 왜'std :: string'을 사용하지 않습니까? – PaulMcKenzie