Mit sscanf überprüfen, ob ein String ein gültiger Integer ist.
-
Hallo,
ich wollte gerne einen Parameter in eine Integervariable übergeben.
Er soll mir auch gleich sagen obs geklappt hat oder nicht.
(Eigentlich interessiert mich nur der zweite Punkt)Hatte dann geschrieben:
if (1 == sscanf(argv[++i],"%d",&zahleneingabe))
Bei argv[i++] = 123 klappt alles wunderbar.
Bei argv[i++] = abc kommt auch ein Fehler.
Wenn nun aber argv[i++] = 123abc ist kommt kein Fehler und ich erhalte 123 als Wert, was für mich sehr schlecht ist ...
Kann ich dem sscanf irgendwie sagen, dass der String komplett umgewandelt werden soll und wenn es nicht klappt soll er mir ein Fehler liefern ?Muss auch nicht umbedingt mit sscanf sein aber wir dürfen nur stdio nutzen und vll stdlib aber selbst da bin ich mir nich sicher ^^
-
Die einfachste Lösung ist wohl strtol() - der übergibt dir auf Wunsch die Position des ersten Fehlzeichens:
char* end; zahleneingabe = strtol(argv[++i],&end,0); if(*end=='\0') ...
Wenn es unbedingt sscanf() sein soll, kannst du ja versuchen, ob nach der Zahl noch etwas verwertbares kommt:
if(1==sscanf(argv[++i],"%d%c",&zahleneingabe,&dummychar) ...
(bei argv[++i]=="123abc" wird dummychar mit 'a' befüllt und sscanf liefert 2, bei "123" sollte es 1 liefern)
-
Vielen Dank für die schnelle Hilfe !!!
Klappt wunderbar!