Char Array中的线性搜索为要搜索的元素获取垃圾值[重复]

Posted

技术标签:

【中文标题】Char Array中的线性搜索为要搜索的元素获取垃圾值[重复]【英文标题】:Linear Search in Char Array takes garbage value for element to be searched [duplicate] 【发布时间】:2018-08-11 08:18:53 【问题描述】:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>

int lsearch(char a[], char element, int num)

    int i;
    for (i = 0; i < num; i++)
    
        if (element == a[i])
        
            return i;
        
    
    return -1;


void main()

    int arr[10], search;
    int i, n, index;
    printf("Enter the number of elements of the array!!");
    scanf("%d", &n);
    printf("Enter the elements of the array!!");
    for (i = 0; i < n; i++)
    
        scanf("%c", &arr[i]);
    
    printf("Enter the element to search\n");
    scanf("%c", &search);
    printf("Your searched element is %c", search);
    index = lsearch(arr, search, n);
    if (index == -1)
    
        printf("\nSorry!! Element not found");
    
    else
    
        printf("Element found at position %d", index+1);
    

这是我在字符数组中实现线性搜索的代码,但它给出了一些不寻常的输出,例如输入的字符少于指定的字符,并且不输入要搜索的元素并直接显示结果“未找到元素”。

此外,当我尝试打印要搜索的元素时,我看到它自己获取任何随机元素。

请帮忙!!

【问题讨论】:

首先,将int arr[10] 更改为char arr[10]。如果您不想要某些字符,请将其添加到循环中:i=0; while(i &lt; n) scanf("%c", &amp;arr[i]); if (isalpha(arr[i])) ++i; do scanf("%c", &amp;search); while (! isalpha(search)); 【参考方案1】:

您必须在读取输入时转义换行符。将您的scanfs 更改为此并尝试

 scanf(" %c", &arr[i]);

注意尾随空格

【讨论】:

以上是关于Char Array中的线性搜索为要搜索的元素获取垃圾值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中线性搜索两个数组?

线性搜索数组

线性搜索平均需要检查多少个元素?

JavaScript数据结构与算法 - 搜索算法

JavaScript数据结构与算法 - 搜索算法

JavaScript数据结构与算法 - 搜索算法