首页 > 解决方案 > 忽略scanf返回值并重新定义函数;不同的基本类型

问题描述

我是 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。

标签: c

解决方案


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

scanf_s不会返回您作为输入输入的值,它的返回值是成功转换和分配的字段数。因此,您应该首先获取输入并将其保存在内存中,然后检查它的值。

另外,我不知道您尝试对 MainMenu 做什么,即 char main() 的返回值(我认为使用 char main 并不常见 - 使用intvoid main 代替):

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

推荐阅读