[英]How to make user input correctly
问题是关于您可以在下面看到的代码部分。 我有两个变量leftLimit
和rightLimit
。 它们的值应严格从 -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.