【问题标题】:My code is not working properly,its logical error i think but i'm not getting it我的代码不能正常工作,我认为它的逻辑错误,但我没有得到它
【发布时间】:2015-03-24 21:58:19
【问题描述】:

它不能正常工作,因为我希望它工作.. 根据我的想法,下面给出的代码总是正确的,我不知道为什么,但是 if 条件总是正确并且数字匹配.. 变量命名因为 CNIC 是这样全局声明的(char CNIC[15])..

  private:
     char ch;
     char str[256];

     std::fstream file1;
  public:
    void verify()
    {
          cout<<"Enter your CNIC number for verifivation : ";
          for(int i=0;i<15;i++)                    
          {
                   CNIC[i] = getche();
          }

          file1.open("D:\\UOL\\OoP\\Nadra database.txt",ios::in);
          check = false;
          while(!file1.eof())
          {         
                file1.getline(str, 255);     
            if(check = strcmp(str, CNIC) == 0);
                 check=true;
          }
          file1.close();
          if(check)
          {
                 cout<<endl<<"CNIC number matched"<<endl;
                              }
          else
          {
                 cout<<endl<<"CNIC number did'nt match " ;
          }
    }
};

【问题讨论】:

  • 请将您的标题更改为与您遇到的问题相关的内容。 “我的代码不起作用,请帮忙”不是一个有用的标题。
  • 注意那些分号。小心。 (给自己找一个为你缩进的编辑器。)另外,eof is wrong
  • 添加括号并删除结束语句的;if((check = strcmp(str, CNIC) == 0)) check=true;
  • 伙计们,我只是一个新人。需要一些时间像你一样。顺便感谢您的帮助

标签: c++ file-handling dev-c++


【解决方案1】:

您的代码包含几个错误。

if 语句由; 终止,因此check 将始终设置为true

// the ';' terminates the if statement
if(check = strcmp(str, CNIC) == 0);
  // check will always be set to true
  check=true;

你需要去掉分号,把你的代码改成:

if(strcmp(str, CNIC) == 0) {
  check=true;
  // my guess would be that you really like to break the loop here
  break;
}

我还必须在你的 for 循环之后为 CNIC 添加一个终止空字符,你需要在变量中为 16 个字符腾出空间,即 char CNIC[16]; 为空字符腾出空间:

for(int i=0;i<15;i++)                    
{
  CNIC[i] = getche();
}
// add null character
CNIC[15] = 0;

【讨论】:

  • 我按照你说的修改了代码,但是 else-condition 现在一次又一次地工作..
  • @AyubÎdréès - 我还认为您应该在CNIC 中添加一个空字符。看看我上面编辑的答案。
  • 在文件中写入了这一行(PTI 1233542 1 投票时间:17:56:07).. 我想搜索 1233542 是否已经存在,我该怎么做! !我是先拆分该数据然后搜索该数字还是有任何简单的方法来解决该问题..
  • @AyubÎdréès - 如果它解决了您的问题,请先接受答案。然后你应该创建一个新问题,因为这似乎与你之前的问题没有任何关系。
猜你喜欢
  • 2019-11-12
  • 2014-10-07
  • 1970-01-01
  • 2018-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
相关资源
最近更新 更多