【发布时间】:2021-01-08 08:40:56
【问题描述】:
下面的代码是跟踪我的产品成本和剩余数量的代码。我面临的问题是我无法搜索代码
if(g[n].name == search[10])
输出不断显示
“未找到项目”
我是 C 语言的初学者,希望能学到更多。请更正我的代码并将其发送到这里,以便我知道我的代码错误的原因。
#include <stdio.h>
struct product
{
char name[10];
int quantity;
float costs;
};
void fn_search (struct product g[]);
int main ()
{
int n;
struct product g[4];
strcpy(g[0].name,"aa1");
g[0].quantity = 10;
g[0].costs = 1;
strcpy(g[1].name,"bb2");
g[1].quantity = 10;
g[1].costs = 2;
strcpy(g[2].name,"bb3");
g[2].quantity = 10;
g[2].costs = 3;
fn_search (g);
}
void fn_search (struct product g[10])
{
int n;
char search[10];
printf("Search>> ");
scanf("%s",&search[10]);
for (n=0;n<4;n++)
{
if(g[n].name == search[10])
{
printf ("\ncosts = NTD%.2f",g[n].costs);
printf ("\nquantity = %d\n",g[n].quantity);
}
else
{
printf("\nItem not found.");
break;
}
}
}
【问题讨论】:
-
要比较字符串,您必须使用
strcmp() -
您没有与 if 语句进行字符串比较。您正在比较两个指针。
-
即使我使用 strcmp for (n=0;n
-
我知道这与您的问题无关。但是如果你声明
char search[10],则索引是从0到9。如果你尝试使用search[10],它就会越界。 -
@Brian
strcmp将指针作为输入参数,search[10]是字符而不是指针。