您好,我目前的程序有问题。当我输入一个电话号码char,并将其与不同的电话号码char进行比较时,答案会回复为假。
这里我的函数在“findContact”函数中搜索一个确切的数字。 getTenDigitPhone是获取电话号码的功能。 我最终得到 *联系NOT FOUND * ,无论它是否匹配
void searchContacts(const struct Contact contact[], int size) {
char phone[11];
int searchIndexContact;
printf("Enter the cell number for the contact: ");
getTenDigitPhone(phone);
searchIndexContact = findContactIndex(contact, size, phone);
if (searchIndexContact > -1) {
printf("\n");
printf("Contact found:\n");
displayContact(&contact[searchIndexContact]);
}
else {
printf("*** Contact NOT FOUND ***\n");
}
}
**这是getTenDigitPhone函数
void getTenDigitPhone(char telNum[11])
{
int needInput = 1;
while (needInput == 1) {
scanf("%10s", telNum);
clearKeyboard();
// (String Length Function: validate entry of 10 characters)
if (strlen(telNum) == 10)
needInput = 0;
else
printf("Enter a 10-digit phone number: ");
}
}
这是findContactIndex(以确定数字是否匹配)
int findContactIndex(const struct Contact contacts[], int size, const char cellNum[])
{
int i;
int value = 0;
for (i = 0; i < size; i++) {
if (contacts[i].numbers.cell == cellNum);{
printf(" %s %s",contacts[i].numbers.cell , cellNum);
value == 1;
}
}
if (value == 1) {
return value;
}
if (value == 0) {
return -1;
}
}
答案 0 :(得分:2)
启用编译器的警告!它会找到你的问题。例如,使用gcc
,至少使用
gcc -Wall -Wextra -pedantic ...
在findContactIndex
,
value == 1;
错了。你可能会选择
value = 1;
但它应该是
value = i;
break;
或只是
return i;
因为函数应该返回匹配的索引。这意味着
int value = 0;
...
if (value == 1) {
return value;
}
if (value == 0) {
return -1;
}
应该是
int value = -1;
...
return value;
或只是
return -1;
与您的问题无关,在findContactIndex
,
if (...);{
应该是
if (...) {
正如您目前所看到的那样,条件表达式的结果被忽略,然后无条件地执行以下块。
与您的问题无关,在findContactIndex
,
contacts[i].numbers.cell == cellNum
应该是
strcmp(contacts[i].numbers.cell, cellNum) == 0
您目前正在比较指针而不是字符串。
修正:
int findContactIndex(const struct Contact contacts[], int size, const char cellNum[])
{
int i;
for (i=0; i<size; ++i) {
if (strcmp(contacts[i].numbers.cell, cellNum) == 0) {
return i;
}
}
return -1;
}