【发布时间】:2017-11-05 15:06:53
【问题描述】:
我需要检查输入是否正确,比如抛出一些错误的输入,如'b'、-2等。这是我的简单代码,如何检查:
#include <stdio.h>
int main()
{
unsigned long long bigNumber;
if(scanf("%llu", &bigNumber) == 0)
printf("Input error!");
else
printf("%llu\n", bigNumber);
return 0;
}
但是当我输入时
-2
我得到了这个输出:
18446744073709551614
这是错误的,因为 -2 不是 unsigned long long。
当我试图改变输入条件时
if((scanf("%llu", &bigNumber) == 0) || (bigNumber < 0))
令人惊讶的是,我得到了一个编译错误:
ex.c:6:52: error: comparison of unsigned expression < 0 is always false
[-Werror,-Wtautological-compare]
if((scanf("%llu", &bigNumber) == 0) || (bigNumber < 0))
~~~~~~~~~ ^ ~
1 error generated.
那么,如果必须是 0 - 10^19 之间的整数,我该如何正确检查我的大数?
【问题讨论】:
-
输入为字符串(如
fgets)然后检查它是否以-开头然后sscanf或strtoull
标签: c scanf unsigned-long-long-int