这代码有什么问题,为什么只有第一行能储存

void Car::scan()
{
cin>>car_line>>a>>countTime;
int k=0;
if(car_line=='A'||car_line=='B')
{
for(int i=countAB;i<countTime;i++)
{
car[i].car_line=car_line;
car[i].countTime=k+1;
judgeAB(i);
k++;
countAB++;
}
}
if(car_line=='C')
{
for(int i=countC;i<countTime;i++)
{
car[i].car_line=car_line;
car[i].countTime=k+1;
judgeC(i);
k++;
countC++;
}
}
}

void Car::prinf1()
{
for(int i=0;i<16;i++)
{
cout<<car1[i].carID<<"\t"<<car1[i].driver<<"\t";
switch3(i);
}
}

这代码有什么问题,为什么只有第一行能储存
例如我输入
A 8 4
A 9 4
A 10 4
这样只有A 8 4这一行存储了,后面的都没有,而且如果我输入的东西里面含C的话就全部不能存储了
各位大神帮帮忙,我改了一天了,都弄不出来

c++

4个回答

建议先排版,不然没人看

void Car::prinf1()这一段改成下面这一段

void Car::scanf()
{
cout<<"请输入出车路线、出车时间及出车数量(A 0 0停止输入):"<<endl;
for(int i=0;i<300;i++)
{
scan();
if(a==0)
break;
}
}

急需啊,求各位大神帮帮忙,谢谢啦

car[i].car_line=car_line;
这样只是让car_line指向了car_line;所有的对象的这个字段都指向了同一个字符串地址。
你应该用new创建新的字符串,再拷贝

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复hyt941026: 就是我说的问题,你需要每次为你的对象分配新的空间。
大约 5 年之前 回复
hyt941026
hyt_ao 回复caozhy: 完整的代码有三百多行呢,你能不能照你说的这个,给出代码,我看看,谢谢啦
大约 5 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复hyt941026: 代码不完整,只能告诉你这么多。
大约 5 年之前 回复
hyt941026
hyt_ao 什么意思。不懂,能不能说清楚点,谢谢啦
大约 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐