用c语言写一个防止非法输入读取小数的函数
时间: 2023-05-29 15:04:00 浏览: 122
自动过滤输入数值时的非法字符的CEdit类
以下是一个用c语言编写的防止非法输入读取小数的函数:
```c
#include <stdio.h>
#include <stdlib.h>
double get_valid_double() {
double num;
char input[100];
int valid = 0;
while (!valid) {
if (fgets(input, sizeof(input), stdin) == NULL) {
printf("Error: input was not valid.\n");
exit(EXIT_FAILURE);
}
if (sscanf(input, "%lf", &num) != 1) {
printf("Error: input was not valid.\n");
continue;
}
if (num < 0.0 || num > 100.0) {
printf("Error: input must be between 0 and 100.\n");
continue;
}
valid = 1;
}
return num;
}
int main() {
double num = get_valid_double();
printf("Valid input: %lf\n", num);
return 0;
}
```
这个函数使用fgets()函数从标准输入读取字符串,然后使用sscanf()函数将字符串转换为double类型的数字。如果输入不是有效的数字,则函数会提示用户输入无效,并要求重新输入。如果数字不在0到100的范围内,则函数也会提示用户,并要求重新输入。一旦输入是有效的,函数返回该数字。
阅读全文