Scanf的返回值被忽略,函数被细化;不同的基本类型

时间:2019-05-12 12:37:39

标签: c

我不熟悉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首先运行,然后根据用户输入,它将从Booking到Exit。

1 个答案:

答案 0 :(得分:0)

您应该首先获取输入,然后检查它是什么。

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;
}