我想制作一个程序来检查用户是否输入了有效的双数。 我知道如何使它做检查有效的整数:如果声明检查用户是否输入了有效的双数
if (scanf("%d%c", &inter, &newLine) != 2 || newLine != '\n')
但是当它来检查double类型这是行不通的。
我想:
if (scanf("%d%c", &inter, &newLine) != 2.00 || newLine != '\n')
和:
if (scanf("%d%c", &inter, &newLine) != 2.000000 || newLine != '\n')
这些都不显得工作
这里是如何检查有效的整数类型的完整示例;
do {
num = inter % 1;
if (scanf("%d%c", &inter, &newLine) != 2 || newLine != '\n') {
printf("Invalid integer, please try again: ");
flushKeybord();
} else {
x = x + 1;
}
} while (x == 0);
的功能,它的调用如果无效,仅仅是一个清除缓冲区
从'scanf'的返回值是不是输入的值,但项目数成功扫描。您必须将'%lf'格式说明符用于'double'而不是'%d'。还要注意'2.00'与'2.000000'完全相同。更多的零并不意味着“更努力”! –
如果用户输入'“123 \ n”'或'“123 \ n”'或'“1.0e1000 \ n”'?那些有效? – chux
是的,如果用户输入123 \ n,这将是无效的,因为它不是一个双重类型与123 \ n相同,如果用户输入1.0e1000也是无效的,因为用户输入的字符不是'\ n' –