gpt4 book ai didi

c - 如何在 C 中只允许特定的输入

转载 作者:太空宇宙 更新时间:2023-11-04 07:59:37 25 4
gpt4 key购买 nike

我的代码:

#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;
}

我只想允许用户只输入“A”或“B”,如果要输入任何其他内容,我想用以下消息重新提示用户:[ERR] 请输入 A 或 B。\

我写了一个可以处理数字的函数,但我无法让上面的函数 (checkInput0) 工作,我做错了什么

最佳答案

  1. scanf返回 c,它返回设置成功的变量个数。将其与 'A' 进行比较毫无意义。

  2. scanf 调用更改为 scanf("%c %c", &option0, &c):当前行为未定义:变量参数需要是指针类型。

  3. x != 'A' || x != 'B' 对于 x 的任何值都是 1

考虑将 scanf 移到 if 条件之外:明确检查 scanf 的返回值。第三点,你要&&吗?

还要小心 ace 代码,在运算符的一侧写入 c,并在另一侧读取它。在这种情况下很好,因为 || 是一个排序点,但您在这里非常接近未定义的行为。

关于c - 如何在 C 中只允许特定的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47590916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com