Линейный поиск в Char Array принимает значение мусора для искомого элемента
#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);
}
}
Вот мой код для реализации линейного поиска в массиве символов, но он дает некоторые необычные результаты, такие как ввод меньшего количества символов, чем указано, без ввода искомого элемента и непосредственное отображение результата "Элемент не найден".
Кроме того, когда я попытался напечатать искомый элемент, я увидел, что он берет любой случайный элемент сам по себе.
Пожалуйста помоги!!
1 ответ
Вы должны выйти из новой строки при чтении ввода. Измени свой scanf
с этим и попробуй
scanf(" %c", &arr[i]);
Обратите внимание на завершающий пробел