Не удается продолжить после функции scanf - PullRequest
2 голосов
/ 02 мая 2019

Я пытаюсь создать программу, которая просит пользователя создать массив только с числами, а также удалить конкретный элемент, запрашиваемый у пользователя

Моя проблема в том, что когда я компилирую и запускаю код,кажется, застрял в моей функции scanf.Я поместил индикаторы, чтобы знать, где в данный момент выполняется мой код, как показано в моей программе ниже

примечание: я не могу использовать указатели

    #include <stdio.h>


    #define MAX_LEN 5



    void remover(int list[], int item)
    {
        int temp[MAX_LEN] = {'e', 'e', 'e', 'e', 'e'}; //e stands for EMPTY
        int i, j, k;
        i = j = k = 0;
        for(i = 0; i < MAX_LEN ;  i++)
        {
            if(list[i] != item) //if array index doesnt match with item to be removed
            {                   
                temp[j++]=list[i]; //copy element to temporary array
            }
        }
        for(k; k<MAX_LEN; k++) //copy TEMP into LIST
        {
            list[k] = temp[k];
        }
    }

    void add(int list[], int item, int nth)
    {
        printf("\nentering add func listing");
        list[nth] = item;
    }

    int main()
    {
        int list[MAX_LEN];
        int item_number, remove_number;
        int inputFlag = 1;
        int i;
        putchar('\n');
        printf("\n------------------------------------------------------");
        printf("\n-------___Ordered List Array Implementation____-------");
        printf("\n------------------------------------------------------");
        printf("\nEnter 5 elements to be filled in:                     ");

        for( i = 0; i<6 && inputFlag; i++)
        {

            printf("\nEnter item number %d in list\t", i+1);
            scanf("%d\n", item_number); //I have tried removing the trailing \n after %d but still gives the same problem
            printf("\n..Done scanning input"); //PROGRAM CANNOT CONTINUE HERE

            if(item_number != sizeof(int))
            {
                printf("\nPlease input integers. Terminating...");
                exit(0);
            }
            add(list, item_number, i);
            printf("\nAdded to add func");
        }

        printf("\nShowing index of list.. ");
        for(int j=0; j<i; j++)
            printf("[%d] ==> %d", j, list[j]);

        printf("\n------------------------------------------");
        printf("\n__________________________________________");
        printf("\nEnter item to be removed:                 ");
        scanf("%d\n", remove_number);
        remover(list, remove_number);
        printf("\nNew list with item ' %d ' removed", remove_number);
        putchar('\n');
        for(int m = 0; m < MAX_LEN; m++)
        {
            if(list[m] == sizeof(int))
                printf("\n[%d] ==> %d", m, list[m]);
            if(list[m] == sizeof(char))
                printf("\n[%d] ==> %c", m, list[m]);
        }
    }

1 Ответ

4 голосов
/ 02 мая 2019

Вы забыли поставить & в свой scanf звонок.

Например, вам следует попробовать:

scanf("%d\n", &item_number);

и должно работать нормально.

Оформить заказ Эта статья для получения дополнительной информации о scanf.

scanf или сканировать отформатированную строку, вам требуется местоположение (адрес) переменной, в которой вы хотите сохранить свое значение.

Оформить заказ Этот вопрос для получения дополнительной информации.

...