Create an initialiser function that takes all the fields as arguments (as if it were an object constructor) and use it instead of setting the fields one by one.
Of course, that won t prevent anybody to keep it doing the wrong way, but if you maintain the discipline of using that function, it will be much more difficult to leave some field uninitialised without noticing. And if you change the fields of the structure (and the function accordingly), the compiler will complain about the mismatching arguments wherever you forgot to update.
You can go a little bit further (but not much more with just plain C) doing some tricks with the preprocessor and the includes to enforce the data encapsulation, but it s somewhat cumbersome. Any book on OOP with C will help you with that issue, but I don t know if the gain is worth the effort.