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);
}
}
}
这个是我现在的代码 但是它只能输出和关键字一模一样的元素
展开
 我来答
yinfengnong
2018-06-20 · TA获得超过5619个赞
知道大有可为答主
回答量:2344
采纳率:89%
帮助的人:2306万
展开全部

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);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式