注册 登录
编程论坛 C++教室

char 用 if 判断貌似一直出问题,,谁帮忙看看?

mxstone 发布于 2014-08-19 03:17, 494 次点击
void CheckData()                  /*查询函数*/
{
        char inName[NUM1];
    char inNum[NUM1];
    char inTitle[NUM2];
    char inWage[NUM2];

        ifstream ifile;
        ifile.open("WageMessage.dat",ios::binary);

        int iDelcount=0;
        int j=0;
    int p=0;
    int iFileLength=0;
    char tmpd[128];         /*临时变量(关键词)*/
        
    iFileLength=GetFileLength(ifile);     /*调用获得文件长度函数*/
        iDelcount=iFileLength/(NUM1+NUM1+NUM2+NUM2);/*获得记录数*/
        
        cout << "现有记录数为 :"<<iDelcount;
        cout << endl;
        cout <<"请输入查找关键词 :";
                cin >>tmpd;
        cout <<endl;
try
{     ifile.seekg(0,ios::beg);
      if(!ifile.fail())
      {  
          for(int i=0;i<iDelcount;i++)
         {
          memset(inName,0,NUM1);             /*将变量清零*/
          memset(inNum,0,NUM1);
          memset(inTitle,0,NUM2);
          memset(inWage,0,NUM2);

          ifile.read(inName,NUM1);          /*读取一组信息*/
          ifile.read(inNum,NUM1);
          ifile.read(inTitle,NUM2);
          ifile.read(inWage,NUM2);
          j=j+1;                       /*J用来判断是否到头了*/
         
          if(tmpd==inName||tmpd==inNum)       /*判断是否与关键词相同*/
          { cout <<"您所查询的信息为:"<<endl;
            cout <<endl;
            cout <<"姓名:"<<inName<<endl;
            cout <<"工号:"<<inNum<<endl;
            cout <<"职位:"<<inTitle<<endl;
            cout <<"工资:"<<inWage<<endl;
            p=p+1;
          }
          else p=0;

          if(j==iDelcount&&p==0)            /*再判断是否到末尾*/
          cout <<setw(24)<<"并未检索到有关信息请重新确认后再检索!"<<endl;
         }
       }
}
catch(...)
  {
          cout<<"抛出异常";
          throw"file error occurred";
          ifile.close();
   }
        ifile.close();
        WaitUser();
}





上面设了一个char的tmpd,输入后 在下面 我想用if 来对比是否和信息符合,符合就输出,不符合就执行别的操作,如果到最后都不符合就输出检索不到。 但运行的结果总是检索不到,我读取信息里面明明都有....之前做过一些改动,结果是所有信息都输出了。。。。。我就觉得应该是if这个判断有问题了..这是一个查询功能,附带运行图片....求教
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录


[ 本帖最后由 mxstone 于 2014-8-19 03:19 编辑 ]
5 回复
#2
stop12042014-08-19 08:21
我就大概看了一下  你的问题..

很明显你的两个tmpd 与 inName 都是char字符串.  
char字符串是不能用关系运算符比较的.(char字符可以) 要用strcmp() .strcmp(字符串1,字符串2) 相同返回 0
string类可以用关系运算符.    我比较喜欢用string
#3
砖家的谎言2014-08-19 08:41
比较方法不对
#4
mxstone2014-08-19 11:10
回复 2 楼 stop1204
嗯,大概知道自己错哪了。 对了,那我这里错的,其实它是在比较地址是麼?而不是对字符串在比较.
#5
embed_xuel2014-08-19 11:15
回复 4 楼 mxstone
是的,比较的是地址
#6
mxstone2014-08-19 12:00
回复 5 楼 embed_xuel
问题解决了,恩改成了if(strcmp(tmpd,inName)==0||strcmp(tmpd,inNum)==0).就可以了。哈哈, 谢谢.
1