Struct 比较结构数组和字符串中的元素

Struct 比较结构数组和字符串中的元素,struct,error-handling,boolean-logic,Struct,Error Handling,Boolean Logic,我的代码如下。我已经从一个输入文件创建了一个电话簿,加载它,读取它,并将该文件分配给一个带有.fname.lname.phone的结构。我认为应该使用的方法是接受用户输入,然后清除缓冲区,然后将结构的特定元素与用户输入进行比较,并通过使用forloop循环遍历每个结构来检查它们是否相等 我通过调试发现的问题是,我发现字符串从未显示为相等。它只是跳到“找不到联系人”。Ii检查,用户输入被正确分配,但布尔条件永远不会满足。也许我不能做contacts.lname==lastnameSearch 还要

我的代码如下。我已经从一个输入文件创建了一个电话簿,加载它,读取它,并将该文件分配给一个带有.fname.lname.phone的结构。我认为应该使用的方法是接受用户输入,然后清除缓冲区,然后将结构的特定元素与用户输入进行比较,并通过使用forloop循环遍历每个结构来检查它们是否相等

我通过调试发现的问题是,我发现字符串从未显示为相等。它只是跳到“找不到联系人”。Ii检查,用户输入被正确分配,但布尔条件永远不会满足。也许我不能做contacts.lname==lastnameSearch

还要注意的是,第一个printf语句用于验证数组的元素是否符合我的预期。我从不输入最内在的if语句。没有编译器错误

代码(如果有人需要,我可以发布我的全部代码):


您试图使用数学比较运算符比较两个字符串值。 看看strcmp函数,它主要用于C中的字符串比较。
如果两个字符串都匹配,则返回0,否则>0或您是对的。。。我不知道为什么我认为一个字符串可以在数字上进行比较,现在我想到它。。。最后一个问题,也许你知道答案:我怎么能告诉布尔搜索不关心大小写?搜索莎拉或莎拉也一样?该函数是否也执行该操作,或者是否有单独的函数?将函数更改为strcmpi()。这是StrucMp()的不敏感的版本,抱歉,StrucPiC++()是C++。我有时会把这两个搞混。另一个简单的选项是在使用strcmp()之前,减少字符串中的每个字符。
  else if (choice == 3)
            {
                char lastnameSearch[50];
                printf("\n\nEnter the last name of the person you are looking for.\n");
                scanf("%s", lastnameSearch);
                fgetc(stdin);
                int k=0;
                for(k=0; count>k; k++)
                {
                    printf("%s %s", contacts[k].fname, contacts[k].lname);
                    if(contacts[k].lname==lastnameSearch)
                    {
                        printf("\n\nFirst name:\t%s. \nLast Name:\t%s. \nPhone Number:\t%s.\n\n ", contacts[k].fname, contacts[k].lname, contacts[k].phone);
                    }
                }
                printf("\nContact not found.\n\n");
            }
if (strcmp(contacts[k].lname, lastnameSearch) == 0) {
    // Match found
}
else {
    // No match
}