gpt4 book ai didi

c - 即使数组编号匹配,它仍然返回 false

转载 作者:太空宇宙 更新时间:2023-11-04 07:58:49 25 4
gpt4 key购买 nike

您好,我的程序目前有问题。当我输入一个电话号码 char,并将其与不同的电话号码 char 进行比较时,答案返回 false。

这里我的函数在“findContact”函数中搜索一个确切的数字。 getTenDigitPhone 是获取电话号码的函数。我最终得到了 * Contact 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;
}

}

最佳答案

启用编译器的警告!它会发现你的问题。例如,使用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 (...) {

正如您目前所做的那样,忽略条件表达式的结果,然后无条件执行以下 block 。


与你的问题无关,在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;
}

关于c - 即使数组编号匹配,它仍然返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48219127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com