C Books

C Books


The C Programming Language (2nd Edition) - Brian W. Kernighan and Dennis M. Ritchie (1988).

  • Still a good, short but complete introduction to C (C90, not C99 or later versions), written by the inventor of C.
  • However, the language has changed and good C style has developed in the last 25 years, and there are parts of the book that show its age.

The Practice of Programming - Brian W. Kernighan and Rob Pike (1999).

  • A very good book to accompany K&R. It uses C++ and Java too.

Programming in C (4th Edition) - Stephen Kochan (2014).

  • A good general introduction and tutorial.

C Programming: A Modern Approach (2nd Edition) - K. N. King (2008).

  • A good book for learning C.

C: How to Program (8th Edition) - Paul Deitel and Harvey M. Deitel (2015).

  • Lots of good tips and best practices for beginners.
  • The index is very good and serves as a decent reference (just not fully comprehensive, and very shallow).

Beginning C (5th Edition) - Ivor Horton (2013).

  • Very good explanation of pointers
  • Using lots of small but complete programs.

Sams Teach Yourself C in 21 Days - Bradley L. Jones and Peter Aitken (2002).

  • Very good introductory stuff.

C Interfaces and Implementations - David R. Hanson (1997).

  • Provides information on how to define a boundary between an interface and implementation in C in a generic and reusable fashion.
  • It also demonstrates this principle by applying it to the implementation of common mechanisms and data structures in C, such as lists, sets, exceptions, string manipulation, memory allocators, and more.
  • It's a model of good C programming using modern design techniques (including Liskov's data abstraction), showing how to organize a big C project as a bunch of useful libraries.

The Standard C Library - P.J. Plauger (1992).

  • It contains the complete source code to an implementation of the C89 standard library, along with extensive discussion about the design and why the code is designed as shown.

21st Century C: C Tips from the New School - Ben Klemens (2012).

  • In addition to the C language, the book explains gdb, valgrind, autotools, and git.
  • The comments on style are found in the last part (Chapter 6 and beyond).

Algorithms in C - Robert Sedgewick (1997).

  • Gives you a real grasp of implementing algorithms in C.
  • Very lucid and clear; will probably make you want to throw away all of your other algorithms books and keep this one.

C Unleashed - Richard Heathfield, Lawrence Kirby, et al. (2000).

  • Not ideal, but it is worth intermediate programmers practicing problems written in this book.
  • This is a good cookbook-like approach suggested by comp.lang.c contributors.

Modern C — Jens Gustedt (2017).

  • Covers C in 5 levels (encounter, acquaintance, cognition, experience, ambition) from beginning C to advanced C.
  • It covers C11 threads and atomic access, which few other books do and not all compilers recognize in all environments.

Essential C (Free PDF) - Nick Parlante (2003).

  • Note that this describes the C90 language at several points (e.g., in discussing // comments and placement of variable declarations at arbitrary points in the code), so it should be treated with some caution.

C in a Nutshell - Peter Prinz and Tony Crawford (2005).

  • Excellent book if you need a reference for C99.

Functional C - Pieter Hartel and Henk Muller (1997).

  • Teaches modern practices that are invaluable for low-level programming, with concurrency and modularity in mind.

C Traps and Pitfalls by A. Koenig (1989).

  • Very good, but the C style predates standard C, which makes it less recommendable these days.

Build Your Own Lisp — Daniel Holden (2014).

  • An enjoyable way to learn C.