我的问题是当我输入超过 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/