繁体   English   中英

如何让用户输入正确

[英]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()不适合用户输入。 首选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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM