Линейный поиск в 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]);

Обратите внимание на завершающий пробел

Другие вопросы по тегам