Hallo,
ich stehe gerade auf dem Schlauch.
Ich möchte mittels sscanf einen Sring bzw. Array in Variablen aufteilen.
Die Variablen in die aufgeteilt werden soll, sind global und schon
vorgegeben.
Beispiel:
1 | ...
|
2 | //Globale Variable:
|
3 | uint8_t Anzahl;
|
4 | uint8_t Maximum;
|
5 | uint8_t Textfeld[]="101 312";
|
6 | ...
|
7 | //dann hier die Funktion mit dem sscanf (globale Variablen sind über extern eingebunden)
|
8 | sscanf(Textfeld,"%u %u",&Anzahl,&Maximum);
|
Problem: sscanf erwartet ja für %u ein unsigned int (also 2 Byte).
Wie bekomme ich nun am besten direkt den Wert in uint8_t?
Ich habe folgendes probiert (was allerdins auch nicht klappt):
sscanf(Textfeld,"%u %u",(uint8_t)&Anzahl,(uint8_t)&Maximum);
Das Textfeld ist in Wirklichkeit viel länger und ich teile etliche
Variablen auf (auch uint16_t und int16_t). Wenn ich die Warnings des
Compilers einfach ignoriere, passen manche Werte nicht, da mir ein Byte
fehlt!
Was ist der einfachste Weg? Ich kann doch nicht extra für jeden Wert
noch ein Variable unsigned int usw anlegen und danach die Werte den
eigentlichen Variablen zuweisen, oder? Das wäre doch
Speicherverschwendung...
Bin ich zu blind einen einfacheren Weg zu gehen?
Gruß Antong