Ich muss überprüfen, wenn die Eingabe richtig gegeben ist, wie einige falsche Eingaben, wie 'b', -2, etc. werfen Heres mein einfacher Code, wie zu überprüfen es:Negative Anzahl Fehler beim Überprüfen der richtigen Eingabe von unsigned lange lange
#include <stdio.h>
int main()
{
unsigned long long bigNumber;
if(scanf("%llu", &bigNumber) == 0)
printf("Input error!");
else
printf("%llu\n", bigNumber);
return 0;
}
jedoch, wenn ich Eingang
-2
ich diesen Ausgang bekam:
18446744073709551614
was falsch ist, weil -2 ist kein unsigned long lang.
Als ich versuchte, die Eingangsbedingung zu ändern, auf
if((scanf("%llu", &bigNumber) == 0) || (bigNumber < 0))
suprisingly, bekam ich einen Übersetzungsfehler:
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.
Also, wie kann ich überprüfen, meine große Zahl richtig, wenn es muss eine ganze Zahl zwischen 0 - 10^19 sein?
Eingabe als String (wie 'fgets') dann Überprüfen Sie, ob es mit' -' beginnt und dann 'sscanf' oder' strtoull' – BLUEPIXY