C Programming: A Modern approach is one of the best books to start with, and the first one I recommend for C. It goes back as far as 1996 but the book has been updated multiple times. It is well organized, well written, clear and concise and covers the language pretty well.
In summary, it is a great book because:
- it contains all the basic features of the language in a simple way (a must for the beginner) (syntax, loops, arrays, functions etc)
- it contains all the advanced features of the language (pointers, structs, unions, enumerations)
- it covers both C88 and C99
- it covers the standard template library too
- but most importantly: it also contains an complete chapter dedicated to program design principles (modules, information hiding , abstract data types etc) including a complete example of an abstract data type with a single interface and multiple implementations.
I consider the chapter a necessary one for the beginner.
A great reading and a must for C programmers!