My favorite is the "Patterns in C" series by Adam Tornhill:
- First-Class ADT
- State
- Strategy
- Observer
- Reactor
Also: I always think of goto
as a great poor man's tool for the decorator pattern.
Update: I'd highly recommend using Rust (rust-lang.org) rather than C except where you are required to use c. Rust has all of the benefits of c, including speed and binary library compatibility with c, but the compiler handles much of the complexity to ensure that the code is memory safe and does not contain data races. It's also portable, has a standard library for common tasks, and much easier to program with for various design patterns.