我scanf("%llu%c", &myUnsignedLong, &checkerNewLine)
用来验证一个数字>0 && <2^64
,checkerNewLine
如果有人试图插入一个字母 ( while (getchar() != '\n');
),则用于清除缓冲区。
但是如果我尝试插入一个负数,例如-541231
,scanf
成功并返回 2(作为匹配的参数数)。显然存储在中的数字myUnsignedLong
是2^64-541231
,但这不是我的意图。
有什么简单的方法可以解决这个问题吗?非常感谢