With so many books already written on C, one wonders why anyone would want to write another one and what makes this one different enough to make people buy it. This book is designed for a fairly select 'niche' audience - those who have been taught a functional programming language as their first programming language and want to learn an imperative language. It does not try to teach the reader how to program, but assumes they can program in SML, though more or less any functional programming language would do.
Given this precondition, the book fulfils its aim. It is well written, the pace is gentle, the coverage comprehensive and the explanations clear. The examples tend to be mainly mathematical, but given the intended audience this is not a drawback.
The book starts with functions and numbers in Chapter 2, moves on to loops in Chapter 3, then structures and pointers in Chapter 4, arrays in Chapter 5 and streams and I/O in Chapter 7. Chapter 8 deals with the compilation process - splitting the program into separate files, the C pre-processor and Make. The book concludes with three case studies in Chapter 9.
Overall, if you know how to program in a functional language and want or need to learn C, this book is worth considering.
The caveat I have is that while you will learn to express functional programming in C, you will be less likely to understand how to write 'good C'. Think of all that documentation written in Japanese English and you will get the idea. The author's motive is to make the transition to C easy, but it is exactly those that find the transition hardest who will find the greatest difficulty in progressing further. - Francis Glassborow.