You basically want a print struct function? (That works for any struct)
Sounds like you don't want a struct at all but rather a class. Or rather a set of classes that all inherit from a base class that has a virtual print() function. Then all the child classes would have to define a print class that printed their data and instantiate the function.
That would be a sensible way of doing it.
A completly insane way of doing it would be to make a struct Type that contains:
* Data type
* Data length
* Data
Then make a set of structs that contain
* A counter of how many variables are in this struct
* An array of pointers to the Types
You can now code something that takes one of your structs, looks up how many data items are in it, accesses them via the area, when it accesses them it findout what type they are and if needed how big they are, then it uses the correct print method to show the output.
Avoid doing this if you can? (There's definitly a well researched way of doing it as exactly this is needed in order to get from C to C++ which is written in C - but why redo the work???)