C语言如何查找并输出数组中含有某一关键字的所有元素?
比如说我数组存储了多个菜品名字酸辣土豆丝清炒土豆丝土豆烧鸡如果我输入土豆怎么能把上面三个菜品的都输出出来?voidcmcz()//按菜品名字查找{charname[7];...
比如说 我数组存储了多个菜品名字
酸辣土豆丝
清炒土豆丝
土豆烧鸡
如果我输入土豆 怎么能把上面三个菜品的都输出出来?
void cmcz()//按菜品名字查找
{
char name[7];
int i=0;
printf("请输入要查找的菜品名字:");
scanf("%s",name);
system("cls");
printf("\t菜名\t价格\t销量\n");
for (i=0;i<Number;i++)
{
if (strcmp(name,fd[i].name)==0)
{
printf("\t%s\t%s\t%d\n",fd[i].name,fd[i].price,fd[i].sale);
}
}
}
这个是我现在的代码 但是它只能输出和关键字一模一样的元素 展开
酸辣土豆丝
清炒土豆丝
土豆烧鸡
如果我输入土豆 怎么能把上面三个菜品的都输出出来?
void cmcz()//按菜品名字查找
{
char name[7];
int i=0;
printf("请输入要查找的菜品名字:");
scanf("%s",name);
system("cls");
printf("\t菜名\t价格\t销量\n");
for (i=0;i<Number;i++)
{
if (strcmp(name,fd[i].name)==0)
{
printf("\t%s\t%s\t%d\n",fd[i].name,fd[i].price,fd[i].sale);
}
}
}
这个是我现在的代码 但是它只能输出和关键字一模一样的元素 展开
1个回答
展开全部
strcmp 是整个字符串比较的,不能用 strcmp,可以用 strstr() 函数,strstr 是在一个字符串中查找一个子串,如果查到返回子串在字符串的位置,查找不到返回NULL。例如:
const char *p = strstr("清炒土豆丝", "土豆");
更多追问追答
追问
不行啊 我一改查找的时候把所有的菜名都输出来了 包括不含土豆两个字的也输出了
追答
不可能吧,可能是你的代码逻辑有问题,你是如何判断的?
这样:
if (strstr(fd[i].name, name) != NULL) {
printf("\t%s\t%s\t%d\n", fd[i].name, fd[i].price, fd[i].sale);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询