C/C++打印出两个值,这是为什么!!!!!!!!!!!!!!

来源:百度知道 编辑:UC知道 时间:2024/06/16 07:30:33
代码如下:

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<<"标

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