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

时间:2019-05-21 06:50:57

标签: c string search strcmp

该程序运行并以代码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”位置找到的元素(如果找到) 如果找不到,请打印“找不到”

1 个答案:

答案 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"打印一次,并且只会在找不到字符串时打印。