【问题标题】:How to print error message when input is incorrect, then repeat prompt for input输入错误时如何打印错误信息,然后重复输入提示
【发布时间】:2017-02-09 02:59:27
【问题描述】:
int GetUserInput(char *userStart,char *userDestination){
char firstLetter,secondLetter;
while(1){
    printf("\nEnter starting position: ");
    scanf(" %c",&firstLetter);
    if (firstLetter == 'x' || firstLetter=='X'){
        return 1;
    }
    printf("Enter destination position: ");
    scanf(" %c",&secondLetter);
    if (secondLetter == 'x' || secondLetter=='X'){
        return 1;
    }

    if (!((firstLetter<'a' && firstLetter>'O') || (firstLetter<'A' && firstLetter>'O'))){
        if (!((secondLetter<'a' && secondLetter>'o') || (secondLetter<'A' && secondLetter>'O'))){
            break;
        }else{
            PrintErrorMessage(2);
            printf("second\n");
        }
    }else{
        PrintErrorMessage(1);
        printf("first\n");
    }
}
*(userStart) = firstLetter;
*(userDestination) = secondLetter;
return 0;


}

我输入了一些错误的输入,但是,错误信息不显示,它只是重复提示再次输入。

输出:

输入起始位置:n
目标位置:v

输入起始位置:

预期输出:

输入起始位置:n
输入目标位置:v
“错误信息”
输入起始位置:

【问题讨论】:

  • 请提供minimal reproducible example 以及准确 输入和预期输出(不是某种表示形式)。你甚至没有展示循环结构。
  • 你的条件都错了。 e.g. secondLetter&lt;'a' &amp;&amp; secondLetter&gt;'o'。该条件总是为假。 a 之前 o 之后的 字母怎么能同时出现?

标签: c windows gcc


【解决方案1】:

通常你会这样做:

do {
    get_input(&a, &b);
while (validate_input(a,b));

然后,当 validate_input 返回 0 时,您就完成了。如果它返回 0 以外的值,则再次调用 get_input。

【讨论】:

    猜你喜欢
    • 2015-04-26
    • 2012-05-11
    • 2012-11-10
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    • 2023-02-23
    • 2014-10-01
    • 1970-01-01
    相关资源
    最近更新 更多