Forum: PC-Programmierung sscanf und whitespace-Problem


von Christian H. (christian_h52)


Lesenswert?

in meinem Programm möchte ich die Eingaben vom user mit fgets abfangen 
und mit sscanf parsen, doch hier scheint es zu einem Problem zu kommen.
1
varnum = sscanf(buffer, "%c %2hu %2hu", &c, &arg1, &arg2);
2
3
printf("c:%c\t arg1:'%2hu' arg2:'%2hu'\n", c, arg1, arg2);

gibt mir bei einer Eingabe von "c 11 77" aber "c '11' ' 7'" zurück. Ich 
dachte, dass whitespace-characters beim parsen übersprungen werden 
(zumindest bei integer-typen) aber hier wird bei der zweiten zahl nur 
die zweite stelle genommen.

Könnt ihr mir hier weiterhelfen? Ich bin gerade vollkommen am 
verzweifeln...

von Karl H. (kbuchegg)


Lesenswert?

> varnum = sscanf(buffer, "%c %2hu %2hu", &c, &arg1, &arg2);

lass die 2-er mal weg.

was macht hu?

von Christian H. (christian_h52)


Lesenswert?

noch immer die gleiche Ausgabe. hu sollte einen unsigned short integer 
zurück liefern.

von Klaus W. (mfgkw)


Lesenswert?

Karl Heinz Buchegger schrieb:
> was macht hu?

short unsigned

von Klaus W. (mfgkw)


Lesenswert?

Christian H. schrieb:
> noch immer die gleiche Ausgabe

du musst beide 2en weglassen, nicht nur die erste, und außerdem die 
Leerzeichen wegnehmen.

von Christian H. (christian_h52)


Lesenswert?

Danke,

Jetzt funktionierts wie gewollt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.