首页 > 解决方案 > C 编程中字符数据类型的错误处理

问题描述

如果用户输入了无效的输入,程序将再次提问,直到用户输入有效的输入。然而,下面的代码执行它,它执行命令两次:

void error_checking(){
        char input;
        printf("Enter letters from a to e");
        scanf("%c", &input);
        if((input<102) || (input>96)){
             printf("Valid input");
        } else {
             error_checking():
        }
int main(){
        error_checking();
}

标签: cerror-handling

解决方案


利用

scanf(" %c", &input);
       ^^^

代替

scanf("%c", &input);
       ^^

否则,函数 scanf 将读取与按下的 Enter 键对应的换行符 '\n'。

你也得到了函数的右括号。

使用像这样的幻数是个坏主意

if((input<102) || (input>96)){

至少你有写

if((input<102) && (input>96)){

推荐阅读