| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 494 人关注过本帖
标题:char 用 if 判断貌似一直出问题,,谁帮忙看看?
只看楼主 加入收藏
mxstone
Rank: 1
来 自:广州
等 级:新手上路
帖 子:19
专家分:0
注 册:2014-8-19
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
char 用 if 判断貌似一直出问题,,谁帮忙看看?
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 编辑 ]
搜索更多相关主题的帖子: 关键词 关键词 
2014-08-19 03:17
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
收藏
得分:20 
我就大概看了一下  你的问题..

很明显你的两个tmpd 与 inName 都是char字符串.  
char字符串是不能用关系运算符比较的.(char字符可以) 要用strcmp() .strcmp(字符串1,字符串2) 相同返回 0
string类可以用关系运算符.    我比较喜欢用string

hl928452957@gmail点com

2014-08-19 08:21
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:0 
比较方法不对

我不是砖家,要努力成为砖家。
2014-08-19 08:41
mxstone
Rank: 1
来 自:广州
等 级:新手上路
帖 子:19
专家分:0
注 册:2014-8-19
收藏
得分:0 
回复 2 楼 stop1204
嗯,大概知道自己错哪了。 对了,那我这里错的,其实它是在比较地址是麼?而不是对字符串在比较.

始乱终弃.
2014-08-19 11:10
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 4 楼 mxstone
是的,比较的是地址

总有那身价贱的人给作业贴回复完整的代码
2014-08-19 11:15
mxstone
Rank: 1
来 自:广州
等 级:新手上路
帖 子:19
专家分:0
注 册:2014-8-19
收藏
得分:0 
回复 5 楼 embed_xuel
问题解决了,恩改成了if(strcmp(tmpd,inName)==0||strcmp(tmpd,inNum)==0).就可以了。哈哈, 谢谢.

始乱终弃.
2014-08-19 12:00
快速回复:char 用 if 判断貌似一直出问题,,谁帮忙看看?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030113 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved