Wesentlich ist, wo der Compiler die nächste Variable hinlegt.
NACH pack() wird der Compiler die nächste Variable wieder "alignen", d.h. du hast eigentlich von dem ganzen nix.

Probiere und prüfe dann:
Code:
#pragma pack(1)
char name[5];
char addr[13];
char plz[5];
#pragma pack()
da darf dann zwischen den Variablen keine Lücke sein.





Abgesehen von allem Anderen, solltest du das so machen: (wenn der Compiler mitspielt)
Code:
#pragma pack(push)
#pragma pack(1)
------
#pragma pack(pop)
Der Sinn liegt auf der Hand (bei verschachtelten ".H" files