gpt4 book ai didi

C 线性搜索无法使用 strcmp 比较两个字符串,编译正常

转载 作者:太空宇宙 更新时间:2023-11-04 04:11:56 24 4
gpt4 key购买 nike

程序运行并退出,代码为0,但没有输出,应该是一个线性搜索程序

我查看了其他类似的问题,我尝试用\n 结束数组。尝试而不是仅仅依靠“if(strcmp = 0)”来制作具有 strcmp 返回值的东西,我是新手而且我学到的不是很好,只是让事情变得更糟,我试着看看如果是关于 strcmp 期望的 char* 值,但找不到问题

#include <stdio.h>
#include <string.h>
#define max 15

int lineal(char elementos[], char elebus)
{
int i = 0;
for(i=0; i<max; i++)
{
if(strcmp(elementos[i], elebus)==0)
{
printf("Elemento encontrado en %d,", i); //element found in
}
else
{
printf("elemento no encontrado"); //not found
}
}

}

int main()
{
char elebus[50];
char elementos[max][50]= {"Panque", "Pastel", "Gelatina", "Leche", "Totis", "Tamarindo" "Papas", "Duraznos", "Cacahuates", "Flan", "Pan", "Yogurt", "Café", "Donas", "Waffles"};
printf("Escribir elemento a buscar\n");
scanf("%s", elebus);

int lineal(char elementos[], char elebus);
}

如果找到,预期输出将是在“i”位置找到的元素如果没有找到打印“未找到”

最佳答案

您想向它传递一个字符串来查找,而不仅仅是一个字符 此外,elementos 应该是一个二维数组。将函数的签名更改为:

int lineal(char elementos[max][50], char *elebus)

此外,在 main 中,您不调用该函数。相反,您只需再次声明它。像这样调用它:

lineal(elementos, elebus);

此外,我会将其更改为返回 void 而不是 int。您既没有返回任何东西(这是未定义的行为),也没有在任何地方使用返回值。但我假设这不是最终版本,您希望在某个时候返回索引。


附带说明一下,现在它正在打印它没有在每次不匹配时都找到该元素,即使它最终找到了它。我会推荐这个:

for (i = 0; i < max; i++)
{
if (strcmp(elementos[i], elebus) == 0)
{
printf("Elemento encontrado en %d\n,", i); //element found in
return;
}
}
printf("elemento no encontrado\n"); //not found

这只打印一次 "elemento no encontrado",而且只有在找不到字符串时才打印。

关于C 线性搜索无法使用 strcmp 比较两个字符串,编译正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56232630/

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