qq靓号永久:C/C++打印出两个值,这是为什么!!!!!!!!!!!!!!

来源:百度文库 编辑:高校问答 时间:2024/03/29 16:41:48
代码如下:

void pri()
{
char cname[10];
err1:
cout<<"请输入要查看的城市名字:";
cin>>cname; //接收城市的名字!
if (cname=="")
goto err1; //如果为空重输
if ((fp=fopen("旅馆.dat","r"))==NULL)
{
cout<<"打开 旅馆.dat 文件错误!!\n";
exit(1);
}
rewind(fp); //重新设置指针!
while(!feof(fp))
{
fread(&ht,sizeof(ht),1,fp); //读出一个结构体
大小的字符!
cout<<cname; /*问题就出在这! 打出CNAME的值时会打出两个来!!!!这是为什么呢!!!*/
if(ht.TNOTC==cname)
{
cout<<ht.name<<"旅馆\n";
cout<<"代码:"<<ht.Code<<"\n";
cout<<"旅馆名字:"<<ht.name<<"\n";
cout<<"城市的名字"<<ht.TNOTC<<"\n";
cout<<"标准间的总数"<<ht.TTAOTS<<"\n";
cout<<"标准间的价格表"<<ht.TLOPOTS<<"\n";
cout<<"可预订标准间的数目"<<ht.CRTNOTS<<"\n";
cout<<"豪华间的总数"<<ht.TTAOTL<<"\n";
cout<<"豪华间的价格表"<<ht.TLOPOTL<<"\n";
cout<<"可预订豪华间的数目"<<ht.CRTNOTL<<"\n";
}
}
fclose(fp);
cout<<"\n--------------------------------\n";
if ((fp=fopen("度假村.dat","r"))==NULL)
{
cout<<"打开 度假村.dat 文件错误!!\n";
exit(1);
}
rewind(fp);
while(!feof(fp))
{
fread(&rt,sizeof(rt),1,fp);
if (rt.TNOTC==cname)
{
cout<<"代码"<<rt.Code<<"\n";
cout<<"度假村名字"<<rt.name<<"\n";
cout<<"城市的名字"<<rt.TNOTC<<"\n";
cout<<"小别墅的总数"<<rt.TTAOTSV<<"\n";
cout<<"小别墅的价格表"<<rt.TLOPOTSV<<"\n";
cout<<"可预订的小别墅数目"<<rt.SVNTCR<<"\n";
}
}
fclose(fp);
mu();
}

把cout<<cname放在下面的if语句范围内啊。
你放在外面,如果读到的第一组数组不是这个城市的数据,还是会执行一次cout<<cname,当然有问题了。
而且这个if的比较条件有问题,字符串比较要用
strcmp(ht.TNOTC,cname), 不能直接用==