Scanf возвращаемое значение игнорируется и уточнение функции;другой базовый тип - PullRequest
0 голосов
/ 12 мая 2019

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

Я попробовал то, что рекомендует Visual Studio, чтобы изменить scanf на scanf_s.Однако это тоже не работает.Что касается неопознанной ошибки функции, я понятия не имею, где ее исправить.

#include <stdio.h>
#include <stdlib.h>

char MainMenu()
{
   int sel;
   sel = 1, 2, 3, 4;
   printf("WELCOME TO WISDOM COLLEGE HOTEL\n\n");
   printf("Please choose your desired service:\n");
   printf("1.Booking\n");
   printf("2.Check Room Availability\n");
   printf("3.Payment detail\n");
   printf("4.Exit\n");
   if (scanf_s("%d",&sel) == 1) {
       return Booking();
   }
   else if (scanf_s("%d", &sel) == 2) {
       return Room();
   }
   else if (scanf_s("%d", &sel) == 3) {
       return Payment();
   }
}

char Booking()
{
   int selBook;
   printf("\t\t\t\t BOOKING\n\n");
   printf("Book base on:\n");
   printf("1.Gender\n");
   printf("2.Room Type\n");
   printf("3.Back to Main Menu\n");
   scanf_s("%d", &selBook);
   printf("\n%d", selBook);
}

char Room()
{
   int selRoom;
   printf("\t\t\t ROOM AVAILABILITY\n\n");
   printf("Check room availability by:\n");
   printf("1.Type\n");
   printf("2.Gender\n");
   if (scanf_s("%d", &selRoom) == 1) {
       return 0;
   }
}

char main()
{
   char MainMenu;
   char Booking;
   char Payment;
   char Room;
   return MainMenu;
}

Я ожидаю, что программа запустится, поэтому сначала будет запущено MainMenu, и, основываясь на вводе пользователя, оно перейдет из резервирования вВыход.

1 Ответ

0 голосов
/ 12 мая 2019

сначала вы должны получить ввод, а затем проверить, что это такое.

scanf_s не возвращает значение, которое вы ввели в качестве ввода, его возвращаемое значение - это число полей, которые успешно преобразованы и назначены. Поэтому вы должны сначала получить входные данные и сохранить их в памяти, а затем проверить их значение.

Кроме того, я не знал, что вы пытались сделать с MainMenu, которое было возвращаемым значением char main () (я не думаю, что обычно используется char main - используйте int или void главная стоянка):

#include <stdio.h>
#include <stdlib.h>

char MainMenu();
char Booking();
char Payment();
char Room();

char MainMenu()
{
   int sel;
   sel = 1, 2, 3, 4;
   printf("WELCOME TO WISDOM COLLEGE HOTEL\n\n");
   printf("Please choose your desired service:\n");
   printf("1.Booking\n");
   printf("2.Check Room Availability\n");
   printf("3.Payment detail\n");
   printf("4.Exit\n");
   scanf_s("%d",&sel)
   if (sel == 1) {
       return Booking();
   }
   else if (sel == 2) {
       return Room();
   }
   else if (sel == 3) {
       return Payment();
   }
}

char Booking()
{
   int selBook;
   printf("\t\t\t\t BOOKING\n\n");
   printf("Book base on:\n");
   printf("1.Gender\n");
   printf("2.Room Type\n");
   printf("3.Back to Main Menu\n");
   scanf_s("%d", &selBook);
   printf("\n%d", selBook);
}

char Room()
{
   int selRoom;
   printf("\t\t\t ROOM AVAILABILITY\n\n");
   printf("Check room availability by:\n");
   printf("1.Type\n");
   printf("2.Gender\n");
   if (scanf_s("%d", &selRoom) == 1) {
       return 0;
   }
}

int main()
{
   MainMenu();
   return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...