我的代码如下。我已经从输入文件创建了一个电话簿,将其加载,读取并将文件分配给具有.fname .lname .phone的结构。我应该使用的方法将接受用户输入,然后清除缓冲区,然后将结构的特定元素与用户输入进行比较,并通过使用forloop循环遍历每个结构来检查它们是否相等。
我通过调试发现的问题是我的字符串从未显示为相等。它只是跳到“没有找到联系人”。 Ii检查并正确分配用户输入,但永远不满足布尔条件。也许我不能做contacts.lname == lastnameSearch
另外需要注意的是,第一个printf语句是验证数组的元素是否符合我的预期。我从不进入大多数内心的if语句。没有编译器错误。
代码(如果有人需要,我可以发布我的整个代码):
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");
}
答案 0 :(得分:0)
您尝试将2个字符串值与数学比较运算符进行比较。 看看strcmp函数,它主要用于C中的字符串比较。 如果两个字符串匹配,则返回0,否则> 0或< 0,这取决于内存中字符串的ASCII值总和。
但是对于你的问题,请选择:
if (strcmp(contacts[k].lname, lastnameSearch) == 0) {
// Match found
}
else {
// No match
}