M
Hi,
wenn man mal den Sinn (oder Unsinn) deiner Funktion beiseite läßt,
will ich dir hier mal eine Erklärung für deinen Output geben:
printf("%s", string);
An dieser Stelle wird ein String erwartet, welcher mit dem Zeichen
'\0' (= 0) beendet ist.
Wenn man sich mal anschaut, wie dein Struct im Speicher liegt
(dafür ist dein memcpy hilfreich, es hätte aber auch ein einfacher
cast getan) sieht es so aus:
0c 00 00 00 16 00 00 00
Zur Erklärung: Dein Strukt ist 8 byte groß. Jedes Byte wird hier
hexadezimal mit zwei Zeichen dargestellt.
Schon das zweite Zeichen ist Null ('\0'), somit gibt dein Programm
nichts aus, da 0c kein darstellbares Zeichen ist (FF = Formfeed, oder so).
Hier mal eine abgewandelte Ausgabe:
printf("Output: size: %d ", sizeof(MY_STRUCT));
for (i=0; i<sizeof(MY_STRUCT); ++i) printf("%02x",buff[i]);
printf("\n");
printf("a: %02x b: %02x \n", my_struct.a, my_struct.b);
printf("a: %02d b: %02d \n", my_struct.a, my_struct.b);
Gruß mcr