-3

我正在编写一个带有命令行界面的小程序。在这个程序中,我想要一个我设法创建的搜索功能。

但它是用于名字的字符搜索,但我想创建相同的功能,该功能将能够使用“学生注册号”进行搜索。

我遇到问题的搜索案例:

int kWord;
stdDetails  stdFind;
cout<<"Enter the Student Registration Number of the Student: ";
cin>>kWord;
for(int x=0;x<i;x++){
  stdFind = stdDetailsStructs_0[x];
  if(!strcmp(kWord,stdFind.stdNum)){
    search=1;
    break;
  }
}
if(search==1){
  display(stdFind);
}else{
  cout<<"Student details not found please try again."<<endl;
}
4

5 回答 5

1

我不认为 kWord 应该是int因为学生注册号应该是字符串。如果它们是数字,您应该使用它们==来检查相等性。

在哪里search声明?

如果它是一个全球性的,你应该有

if(search==1){
  display(stdFind);
}else{
  cout<<"Student details not found please try again."<<endl;
  search = 0; // <-- add this
}
于 2013-05-28T07:48:57.390 回答
1

stdNum 是结构 stdDetails 中的 int 类型。所以使用==运算符 insted ofstrcmp()

                    int kWord;

                    cout<<"Enter the Student Registration Number of the Student: ";
                    cin>>kWord;
                        for(int x=0;x<i;x++){

                        if(kWord==stdDetailsStructs_0[x].stdNum)                       
                        {
                            search=1;
                            break;
                         }   
                        }
                        if(search==1){
                            display(stdFind);
                        }else{
                            cout<<"Student details not found please try again."<<endl;
                        }
于 2013-05-28T07:50:55.517 回答
0

如果它只是一个数字,为​​什么不能使用==运算符而不是 strcmp。

于 2013-05-28T07:45:48.787 回答
0

使用--- if (kWord == stdFind.stdNum),,,, strcmp() 用于字符串比较。kWord 和 stdNum 是整数值。

于 2013-05-28T07:48:40.447 回答
0

我会使用 strncmp() (即使它真的是 C 风格并且您可以使用 STL),因为它可能一直失败,因为行尾的 '\n'。

如果 stdNum 实际上是一个字符串:

if(!strncmp(kWord,stdFind.stdNum, strlen(stdFind.stdNum))){
于 2013-05-28T07:49:58.880 回答