'ожидаемое выражение перед' структурой 'и' слишком мало аргументов для функции 'ошибки в программе C - PullRequest
0 голосов
/ 27 мая 2020
struct library{
int id;
int qty;
char name[50];
};

int SearchBookID(const struct library b[],int SearchID,int start,int end)
{

    if(start<end && b[start].id == SearchID)
    {
        printf("%s %d %d",b[start].name,b[start].id,b[start].qty);
        return 1;
    }
    else
    {
        SearchBookID(b,SearchID,end,start++);
    }
}
void main()
{
    int choice;
    char ans;
    int SeID;
    printf("Welcome to the Library.\n");
    do
    {

        printf("Please choose an option:\n");
        printf("1.Insert a book\n");
        printf("2.Delete a book by ID\n");
        printf("3.Search a book by ID\n");
        printf("4.Search a book by name\n");
        printf("5.Display all books (sorted by name)\n");
        printf("6.Display all books (unsorted)\n");
        scanf("%d",&choice);
        switch (choice){
        case 1:
            break;
        case 2:
            break;
        case 3:
            printf("please enter book ID:");
            scanf("%d",&SeID);
            SearchBookID(struct library b[],SeID,0,50);
            break;
        case 4:
            break;
        case 5:
            break;
        case 6:
            break;
        default:
            printf("Invalid Choice. Please try again.\n");
            break;
        }
        printf("do you want to choose another option?(y/n)  ");
        scanf(" %c",&ans);
    }while(ans == 'y');
}

Я продолжаю получать эти две ошибки, и я не понимаю почему, особенно ошибка «слишком мало аргументов». Я попытался определить структуру как глобальную переменную с помощью typedef, но ошибка все еще сохраняется, и когда я добавляю дополнительные аргументы в функцию, она все еще говорит «слишком мало аргументов». Кто угодно может помочь.

1 Ответ

3 голосов
/ 27 мая 2020

Этот вызов

SearchBookID(struct library b[],SeID,0,50);
             ^^^^^^^^^^^^^^^^^^

неверен. Вместо того, чтобы указывать выражение в качестве первого аргумента функции, вы написали объявление.

Сравните эту запись с вызовом функции внутри самой функции

SearchBookID(b,SearchID,end,start++);

Обратите внимание, что нигде в программе вы не объявили массив с типом элемента struct library.

...