我的代码:
#include<stdio.h>
char checkInput0(void);
int main() {
char output;
output = checkInput0();
printf("The output is %c", output);
}
char checkInput0(void){
char option0 = '\0',check0;
char c;
do{
printf("Please enter your choice: ");
if(scanf("%c %c",option0, &c) != 'A' || c != 'B' ){
while((check0 = getchar()) != 0 && check0 != '\n' && check0 != EOF);
printf("[ERR] Please enter A or B.\n");
}else{
break;
}
}while(1);
return option0;
}
我想只允许用户输入&#34; A&#34;或&#34; B&#34;如果输入任何其他内容,我想用以下消息重新提示用户:[错误]请输入A或B. \ n
我写了一个与数字配合使用的功能但我无法使用上面的那个(checkInput0)工作,我做错了什么
答案 0 :(得分:2)
scanf
不返回 c
,它返回成功设置的变量数。将其与'A'
进行比较是毫无意义的。
将scanf
调用更改为scanf("%c %c", &option0, &c)
:当前行为未定义:变量参数需要是指针类型。
x != 'A' || x != 'B'
的任何值, 1
为x
。
考虑将scanf
移到if
条件之外:明确检查scanf
的返回值。关于第三点,你想要&&
吗?
还要小心使用 ace 代码,将c
写在运算符的一侧,然后在另一侧读取它。在这种情况下很好,因为||
是一个排序点,但是你非常接近未定义的行为。