Ah, C! This brings back memories. I had to learn C "on the job" and what a confusing beast it was. It was years before I found time to learn the details and I was probably dangerous until then! It's always better to take the time to learn something like this properly and I could have done worse than work through this book. Though I expect it would have taken some time. The K&R "bible" has run out of pages before this book has covered the
I didn't do the exercises but I did give it a full read - a good 750 pages or so before the reference section. I learnt a few things too; mostly about C99 which the book focusses on. It does have the good grace to point out where compiler support is lacking and there is a good grounding in other practical matters. Not enough emphasis on non-portable behaviour for my liking, with bad advice on bitfields. But the teaching style is nice - introduce a new program, then follow it up with a lengthy discussion. Not just the basic language details either, but common use idioms.
I would leave it at that and recommend it for anyone committed to follow a large tutorial. But I have a few worries.
About halfway through, I came across this gem:
So in serious programming, you should useRelaxed approach? Your stock is falling Dr. Prata. Still, that's academics for you: wagging a finger at us for shunning garbage collection and formal verification; then writing FORTRAN libraries.fgets()rather thangets(), but this book takes a more relaxed approach.
Another thing I look for in a basic C book is
. Sure enough, it's not recommended and there is even a good section on how to replace it with structured code. But no satisfactory explanation for why it should be shunned. So students that learn from this book will likely rebel when they see how easy it is to use and will badger C/C++ lists to accept that it's a good thing. Probably quoting Knuth.
So, while other books might be better, it's a good tutorial for C that takes a complete novice into fairly advanced territory.