This may sound strange, but learning C to a higher level is less about what you read and more about what you research. Finding a new book on the C language isn't going to automatically push you to a new level. Try to create some programs and as you're coming up with designs for new software, research your goals and develop techniques(as well as researching other techniques that you come across) to accomplish what you're trying to do. For example, you may decide to create a function to output uniform error messages and from that idea you may come up with a design that would require accepting an arbitrary number of arguments. After some research, you learn about variable argument lists and how printf & the like really work. You may also determine how to properly use assert and how some slightly more advanced macros can be used for interesting things like doing positional argument exchanges. Perhaps you may even discover interesting things about how to do coroutines in C(something that the language itself generally doesn't support, as a design fault). Moving to a higher level isn't necessarily found in what you READ...it's found in what you learn whilst trying to DO.
Anywho..for book suggestions, one of my biggest & favourite books is:
The Standard C LibraryGood luck && have fun!