该程序运行并以代码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”位置找到的元素(如果找到) 如果找不到,请打印“找不到”
答案 0 :(得分:0)
您要向其传递一个字符串来查找,而不仅仅是一个字符。另外,elementos
应该是2D数组。将函数的签名更改为此:
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"
打印一次,并且只会在找不到字符串时打印。