c++ - 如何防止我的输入在程序继续时跳转到其他函数

标签 c++ c

我的问题是当我输入超过 1 个数字或字符(例如:156)时,值 56 直接转到我的下一个函数(f1,f2)。我怎样才能防止这种情况并打印出错误? (p.s:我是新手,所以如果你们可以帮助我而不使用 iostream,那就太好了

char c;
printf("menu");
printf("Please enter the option 1 - 4, press q to quit\n");
input_c:            
scanf("%c",&c);
do{         
switch (c)          
case '1': f1();
break;
case '2': f2();
break;
case 'q': quit();
break;
default: goto input_c;
break;
}

我将其编辑为我的原始代码,这导致我遇到了同样的问题

最佳答案

char c[2]; 声明中,c 是一个包含 2 个字符的数组,索引范围从 0 到 1。因此在读取输入时,scanf("%c", &c[i]) 应该被使用。

您不能在语句 switch (c[2]) 中使用数组索引作为 2,因为数组索引在 C 中从 0 开始。

main() {
char c; 
scanf("%c", &c);
switch(c) {
   case '1': f1(); break;
   case '2': f2(); break;
   case 'q': quit(); break;
   default: //blah
}

上述方法可以很简单地使用。

关于c++ - 如何防止我的输入在程序继续时跳转到其他函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19889039/

相关文章:

c++ - 一个函数检测参数类型,值,以及另一个函数的名称和返回值?

c++ - 为什么取消 istream/ostream 的 IO 函数中的 pthread 会设置 badbit?

c++ - C++ 中永无止境的 while 循环,即在输入字符串 == no 时结束?

c - 将unsigned char字节打包成c中的unsigned int

c++ - 如何过滤或 "grep"C++ vector ?

c++ - SDL_RENDERER_PRESENTVSYNC 显示不一致

c++ - Windows 如何进行定时 GUI 动画?

c - 如何访问 C 程序中的 perl 控制台输出?

c - 如何为长度为30,000的一维数组动态分配内存?

在 Win 10 上对 NetShareEnum 的 C 调用失败并显示 5 'Access Denied',而同一用户可以浏览 SMB 共享