【问题标题】:I only need one character,if user input several characters, how to print error message? [closed]我只需要一个字符,如果用户输入多个字符,如何打印错误信息? [关闭]
【发布时间】:2015-12-09 02:48:06
【问题描述】:
  • 我使用scanf("%c",...) 来获取用户的输入。
  • 我只需要一个字符,例如 '1''Q'
  • 如果用户输入2,51242scanf可以得到第一个 特点。其他字符留在缓冲区中。但我不想要几个字符的第一个字符,我只 需要一个字符
  • 我不知道如何处理这种情况然后打印错误 消息。

谁能帮帮我?

【问题讨论】:

    标签: c input char scanf


    【解决方案1】:
    #include <stdio.h>
    
    int main(void){
        char input;
    
        if(scanf("%c", &input) == 1){
            if(input != '1' && input != 'Q' || getchar() != '\n'){
                fprintf(stderr, "input error!\n");
                while(getchar() != '\n');//clear input
            } else {
                printf("your input is %c\n", input);
            }
        }
        return 0;
    }
    

    【讨论】:

    • 我不想要几个字符的第一个字符,我只需要一个字符...如果输入的是1,3,它应该打印一个错误消息.
    • @sakurababy 这只能获得单个字符。如果输入是 **1.388 打印错误消息。如果输入是 1,3,scanf 可以得到第一个字符。其他字符留在缓冲区中。
    • 我的意思是如果输入是1,3,我不希望scanf获取第一个字符,它应该打印一条错误消息并清除缓冲区。@BLUEPIXY跨度>
    • @sakurababy 我认为与发布的条件不同。 其他字符留在缓冲区中。 清除缓冲区,编辑问题。
    • 我的意思是 scanf 可以做到这一点->(获取第一个字符和其他字符留在缓冲区中),但我不希望它这样做,我希望它打印一条错误消息,也许你没有注意到但是。无论如何,你能帮帮我吗?
    【解决方案2】:

    这行得通吗? (扫描字符串而不是字符):

    char buf[10];
    printf("Enter a single character: ");
    scanf("%s", buf);
    if ( strlen( buf ) != 1 )
        printf("Error");
    

    【讨论】:

    • 但是我需要这些数字来比较,如果是字符串就无法比较..
    猜你喜欢
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多