我想采用 float 输入,但如果用户输入字符,它将显示无效输入,我在网上没有找到具体的答案。 它是如何完成的?
最佳答案
虽然 scanf
可以安全地解析 double ,但许多编译器已弃用它(有充分的理由),因为它在解析字符串时不安全。此外,如果解析失败,您将在输入缓冲区中留下残留物,并且您必须自己刷新它。
出于这些原因,更喜欢像 fgets
这样的函数,它检查其提供的缓冲区的长度,然后是像 strtod
或 sscanf
这样的函数> 进行转换。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char buf[64];
/* read */
if (fgets(buf, sizeof buf, stdin)) {
/* convert */
char *err;
double d = strtod(buf, &err);
if (*err) {
puts("entry invalid");
} else {
printf("you entered %lf", d);
}
}
return 0;
}
关于c - 如何确定c中的无效输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25222667/