I assume this question might be regarded as off-topic for this SE, but here are some thoughts:
First of all, ask your advisor. There might be local preferences which should be followed.
Take a look at the different UML diagrams. Some are helpful even if you are not using an object oriented language. I would check Activity Diagrams.
For some crucial parts of the software it might even be appropriate to include the code as is - but this should be done only if the specific C implementation is relevant. If it's more then a half page, I would think about moving it to an appendix.
Often, pseudocode is helpful because implementation details can be hidden.