gpt4 book ai didi

c - 这是验证菜单的好习惯吗?

转载 作者:太空宇宙 更新时间:2023-11-03 23:55:06 25 4
gpt4 key购买 nike

我需要显示一个派生另一个菜单的菜单,这派生另一个菜单。但我正在用这种形式验证这些菜单:(仅 C 标准库)

do{
validOption = 1;
printf("Option #1\n");
printf("Option #2\n");
printf("Option #3\n");
scanf("%i",&option);
switch(option){
case 1: /* Do something */ break;
case 2: /* Do something */ break;
case 3: /* Do something */ break;
default: validOption = 0; printf("Invalid Option\n"); break;
}
}while(!validOption);

但在导出菜单时,我不知道是否使用相同的 option 变量和 validOption 标志。我认为这不是问题,因为 derived option 变量将被覆盖并且我将不需要之前的 option 变量,因为该 option 变量仅用于在特定情况下加入的目的。现在,validOption 标志也不是问题,因为当成功案例发生时意味着 validOption = 1(不会重复更多)它将与之前的值为 1 的 validOption 匹配(因为已加入案例)。所以不会干涉。

在派生菜单中使用相同的变量(option, validOption)是一种好的做法吗?

我还需要使用 getint() 函数进行验证,这让我觉得如果甚至有必要以实用的方式验证菜单。

#include<stdio.h>
int main(){
int option;
int validOption;
do{
printf("Option #1\n");
printf("Option #2\n");
printf("Option #3\n");
scanf("%i",&option);
switch(option){
case 1:
validOption = 1;
do{
printf("Option #1\n");
printf("Option #2\n");
printf("Option #3\n");
scanf("%i",&option);
switch(option){
case 1: validOption = 1; /* Another menu with the same option and validOption variables */ break;
case 2: validOption = 1; /* Do something */ break;
case 3: validOption = 1; /* Do something */ break;
default: validOption = 0; printf("Invalid Option\n"); break;
}
}while(!validOption);
break;
case 2: validOption = 1; /* Do something */ break;
case 3: validOption = 1; /* Do something */ break;
default: validOption = 0; printf("Invalid Option\n"); break;
}
}while(!validOption);
return 0;
}
//I've put validOption = 1; within all cases just for explaining purposes

最佳答案

我宁愿称它为嵌套循环而不是派生

回到您的问题:当不再需要变量的第一个值时,在循环中重复使用同一个变量是否有效? (我改写你的问题是否正确?)

是的,这是有效的。虽然这在技术上没有任何问题,但我会说。因为,它会导致不必要的混淆并使代码的可读性变得困难,尤其是当您在同一个循环中时(就像在外循环中所做的那样)。随着代码库的增长,它变得更加困难。因此,我不鼓励这种编码做法。

您想验证您的整数:因为您只打算进行按值传递(到 getint()),所以使用另一个变量没有问题。您可以使用 option1option2

将值传递给 getint() 以验证它。

关于c - 这是验证菜单的好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9982768/

25 4 0