Strongly complemented by Sedgewick's Algorithms in C.
[0] https://www.amazon.com/Interfaces-Implementations-Techniques...
https://www.amazon.com/Interfaces-Implementations-Techniques...
As mentioned in another post, David Hanson's "C Interfaces and Implementations - Techniques for Creating Reusable Software" [1] is a great book, stressing the design of good APIs. This book in particular might help you in your goal to become a better engineer.
On the free side, there's an excellent PDF by Jens Gustedt, "Modern C" [2]. I've not read the whole thing but it seems like an in-depth look at C11.
John Regehr's blog "Embedded in Academia" [3] is a good resource for C programming. You'll learn a lot about weird edge cases and undefined behavior. He also has a recent post about teaching C, with suggestions for resources [4].
[0] https://www.amazon.com/21st-Century-Tips-New-School/dp/14919...
[1] https://www.amazon.com/Interfaces-Implementations-Techniques...
[2] http://icube-icps.unistra.fr/img_auth.php/d/db/ModernC.pdf
(Regular HN readers will recognize the author of the top review on Amazon.)
[0] http://www.amazon.com/Interfaces-Implementations-Techniques-...
I also second the recommendation for Peter van der Linden's Expert C Programming for its masterful treatment of how C really functions, including the surprisingly frequent areas in which real-world constructs produce "undefined behavior" from the perspective of the C standard.
[1] http://www.amazon.com/Interfaces-Implementations-Techniques-...