修复C开关语句函数溢出?
因此,基本上,当我编译它并执行代码并选择各种情况时,它将一次执行多个函数并一次输出多个语句。假设我选择了案例1,它的输出会打印一些东西,但当我选择案例2时,它会打印 一点 2点 当我选择案例3时,它会打印出来 一点 2点 三点修复C开关语句函数溢出?,c,switch-statement,C,Switch Statement,因此,基本上,当我编译它并执行代码并选择各种情况时,它将一次执行多个函数并一次输出多个语句。假设我选择了案例1,它的输出会打印一些东西,但当我选择案例2时,它会打印 一点 2点 当我选择案例3时,它会打印出来 一点 2点 三点 那么,我如何修复代码以脱离循环呢?我认为break语句只能让它一次执行一个函数。是的,我的代码中没有包含引用我的typedef结构的东西。为什么要在函数中输入东西。您发布的代码也不会编译 名称中还有一个空白,并且缺少函数something\u t do\u somethi
那么,我如何修复代码以脱离循环呢?我认为break语句只能让它一次执行一个函数。是的,我的代码中没有包含引用我的typedef结构的东西。为什么要在函数中输入东西。您发布的代码也不会编译 名称中还有一个空白,并且缺少函数something\u t do\u something 1(void)的函数类型。print\u case()具有开关。它做了自己的事情,然后返回。main()中的函数原型实际上只是调用。所以它叫他们。所以你可以看到所有的函数都在执行。C有耸耸肩的习惯,因为传统上它是非常宽容的。将“原型”移到main()之前,最好在所有原型上都加上正确的签名 您的do_something2有一个arg,但您没有在(非工作)伪原型中声明它-也就是说,一旦您将其移到before main()之前,它将是不正确的
另外,既然您已经声明dou_something2()接受arg,那么最好通过一个 这是你的代码的干净版本,我想这可能会帮助你记住一些东西
int main (void)
{
*/ function prototypes */
print_case();
do_something1();
do_something2();
do_something3();
do_something4();
exit_program();
program_invalid();
}
void print_case (void)
{
int i;
printf("\n"
"1. Do Something 1\n"
"2. Do Something 2\n"
"3. Do Something 3\n"
"4. Do Something 4\n"
"5. Exit the program\n"
"Enter choice (number between 1-5)>\n");
scanf("%d", &i);
switch(i)
{
case 1:
do_something1();
break;
case 2:
do_something2();
break;
case 3:
do_something3();
break;
case 4:
do_something4();
break;
case 5:
exit_program();
break;
default:
program_invalid();
break;
}
return;
}
something_t do_something1(void)
{
something_t something;
printf("Something 1\n");
return something;
}
void do_something2(something_t something)
{
printf("Something 2\n");
}
void do_something3()
{
printf("Something 3\n");
}
void do_something4()
{
printf("Something 4\n");
}
void exit_program (void)
{
exit(0);
}
void program_invalid (void)
{
printf("Not valid choice");
}
#包括
#包括//以退出。
#定义True 1//符号常量。
/*
*这是一个多行注释。
* -----------------------------
*这就是函数原型的工作原理
*应该是。
*您可以保留参数名称
*空,因为在函数原型中
*参数名是dumy,但不是dumy
*类型。
*/
typedef int something_t;//这里可以有任何结构。
//举个例子。
作废打印件(作废);
做不到的事(空虚);
无效做某事2(某事);
无效做某事3(无效);
无效做某事4(无效);
作废退出程序(作废);
无效程序(无效);
//----这是单行注释。
int main()
{
while(True){
print_case();
}
返回0;
}
作废打印箱(作废)
{
int i;
printf(“\n”
“1.做点什么1\n”
“2.做点什么2\n”
“3.做点什么3\n”
“4.做点什么4\n”
“5.退出程序\n”
“输入选项(1-5之间的数字)>\n”);
scanf(“%d”、&i);
开关(一){
案例1:
做点什么;
打破
案例2:
do_something2(True);//必须通过结构。
打破
案例3:
做点什么;
打破
案例4:
做点什么;
打破
案例5:
退出_程序();
打破
违约:
程序_无效();
打破
}
返回;
}
做不到的事(无效)
{
有事,有事,;
printf(“某物1\n”);
归还某物;
}
虚空做某事2(某事)
{
printf(“某物2\n”);
}
无效做某事3(无效)
{
printf(“某物3\n”);
}
无效做某事4(无效)
{
printf(“某物4\n”);
}
作废退出程序(作废)
{
出口(0);
}
无效程序\u无效(无效)
{
printf(“无效选择”);
}
这不是真正的代码,它有语法错误,无法编译。你必须返回一些东西代码>在函数外部,上一个函数中缺少引号。而且开关不可能按照你说的做。是的,让我修复我的打字错误,这说明了问题。确保有一个main()
函数可以调用。@Barmar my bad
要获得要编译的代码,它应该运行良好。
#include <stdio.h>
#include <stdlib.h> // for exit.
#define True 1 // Symbolic constants.
/*
* This is a multi-line comment.
* -----------------------------
* These is how a function prototype
* should be.
* You can leave the parameter names
* empty because in function prototypes
* the parameter names are dumy but not
* the types.
*/
typedef int something_t; // You can have any structure here.
// just for an example.
void print_case(void);
something_t do_something1(void);
void do_something2(something_t);
void do_something3(void);
void do_something4(void);
void exit_program (void);
void program_invalid (void);
// ---- This is a single line comment.
int main()
{
while(True) {
print_case();
}
return 0;
}
void print_case (void)
{
int i;
printf("\n"
"1. Do Something 1\n"
"2. Do Something 2\n"
"3. Do Something 3\n"
"4. Do Something 4\n"
"5. Exit the program\n"
"Enter choice (number between 1-5)>\n");
scanf("%d", &i);
switch(i) {
case 1:
do_something1();
break;
case 2:
do_something2(True); // must pass your struct.
break;
case 3:
do_something3();
break;
case 4:
do_something4();
break;
case 5:
exit_program();
break;
default:
program_invalid();
break;
}
return;
}
something_t do_something1(void)
{
something_t something;
printf("Something 1\n");
return something;
}
void do_something2(something_t something)
{
printf("Something 2\n");
}
void do_something3(void)
{
printf("Something 3\n");
}
void do_something4(void)
{
printf("Something 4\n");
}
void exit_program (void)
{
exit(0);
}
void program_invalid (void)
{
printf("Not valid choice");
}