Du wirst dich also wohl oder übel
a) auf der linken Seite für ein Element des Arrays entscheiden müssen
b) auf der rechten Seite den Pointer dereferenzieren müssen.
Also zb sowas
1 | stDaten.daten[5] = *buffer;
|
(Für die 5 natürlich dann der Indexwert den du tatsächlich haben willst)
denn dann steht da datentyp-mässig gesehen
(unsigned char[20]) Operation-[] = Operation-* (unsigned char *)
links: ein Einzelelement eines Arrays hat den Basistyp des Arrays, die
linke Seite 'kürzt' sich daher zu unsigned char.
und rechts: dereferenziert man einen Pointer, erhält man den Datentyp
der Werte, auf den der Pointer zeigt. Auf der rechten Seite hebt also
die Operation '*' ausserhalb der Klammer den * innerhalb der Klammer
auf.
Beides zusammengenommen ergibt aus Sicht der Datentypen daher
unsigned char = unsigned char
und damit ist dann auch der Compiler happy, weil links und rechts
derselbe Datentyp rauskommt.
Ob das allerdings in Summe die Operation ist, die du haben willst, ist
eine andere Geschichte.