如何让用户输入正确

How to make user input correctly

问题是关于您可以在下面看到的那部分代码。我有两个变量 leftLimitrightLimit。它们的值应严格从 -1 到 1(不包括在内)。好的,我解决了这个问题。当输入 >= 比 |1|程序将询问直到输入所需的值。但它仅在输入具有数字值时才有效。当输入为 a/ 等时,程序结束但没有任何效果。我该如何解决?如何防止我的程序进行非数字输入?

#include <stdio.h>
#include <math.h>
int main() {
double leftLimit, rightLimit;
printf("Enter the left limit: ");
scanf ("%lf", &leftLimit);
while (fabs(leftLimit)>=1) {                
    printf("\nYou typed a wrong limit, try again: ");
    scanf("%lf", &leftLimit);
}
printf("\nEnter the right limit: ");
scanf("%lf", &rightLimit);


while (fabs(rightLimit)>=1) {                 
    printf("\nYou typed a wrong limit, try again: ");
    scanf("%lf", &rightLimit);
}

scanf() 是 ill-suited 用于用户输入。 首选 fgets() 可能后跟 sscanf()strtol()strtod()

double leftLimit;
char buffer[1000];
for (;;) {
    printf("Enter left limit: ");
    fflush(stdout);
    if (!fgets(buffer, sizeof buffer, stdin)) exit(EXIT_FAILURE);
    char *err;
    leftLimit = strtod(buffer, &err);
    if (*err != '\n') continue;
    if (fabs(leftLimit) >= 1) continue;
    break; // all ok
}
printf("Accepted left limit of %f.\n", leftLimit);