The mechanisms for reusing C code are very simple—you can break up the source code into separate files containing user-defined data types and functions that manipulate them, thus ensuring that the modules are kept separate.
Another option that you have is to create libraries that can be dynamically or statically linked. This requires a little more work and some additional research, but is also a feasible approach.
These libraries should also be designed and programmed in a reusable fashion. This includes being able to properly document them—meaning both notes and inline comments—so that they can be located and understood.
Of course, every programmer that uses the C Standard Library Functions is participating in reuse, ...