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 < n) scanf("%c", &arr[i]); if (isalpha(arr[i])) ++i;
和 do scanf("%c", &search); while (! isalpha(search));
【参考方案1】:
您必须在读取输入时转义换行符。将您的scanf
s 更改为此并尝试
scanf(" %c", &arr[i]);
注意尾随空格
【讨论】:
以上是关于Char Array中的线性搜索为要搜索的元素获取垃圾值[重复]的主要内容,如果未能解决你的问题,请参考以下文章