c - 忽略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。
解决方案
您应该首先获取输入,然后检查它是什么。
scanf_s不会返回您作为输入输入的值,它的返回值是成功转换和分配的字段数。因此,您应该首先获取输入并将其保存在内存中,然后检查它的值。
另外,我不知道您尝试对 MainMenu 做什么,即 char main() 的返回值(我认为使用 char main 并不常见 - 使用int或void 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;
}
推荐阅读
- r - cmdstanR:从 stan 模型拟合中提取绘图
- javascript - Instagram 从电脑上传视频
- javascript - 将现有 React 应用程序的客户端渲染转换为服务器端渲染
- adsense - Adsense 不适用于子域,403 错误
- python - 将 TensorFlow 1.0 代码转换为 2.0 版本
- webassembly - WASI 与 Web-Assembly
- java - 如何将 MS Access 数据库数据连接到 Net-beans java 程序
- python - matlab有没有使用条件连接数组的功能?
- eclipse - BirtDateTime.addDay 在新年前夜返回错误的年份
- php - 为什么我无法从数据库中检索日期