I think C has a lot of features that are very important. The way C handles pointers, for example, was a brilliant innovation; it solved a lot of problems that we had before in data structuring and made the programs look good afterwards. C isn't the perfect language, no language is, but I think it has a lot of virtues, and you can avoid the parts you don't like. I do like C as a language, especially because it blends in with the operating system (if you're using UNIX, for example).
I can only guess that Knuth doesn't use C in TAOCP because C isn't defined in the kind of way that he thinks is suitable for teaching. Every port of C to some given architecture has different parameters which effectively render it a different dialect, and there are undefined behaviors all over the place.
More than 20 years ago, knuth ported his literate programming system to C, resulting in CWEB.
Here is a 1993 interview with Knuth about CWEB: http://tex.loria.fr/historique/interviews/knuth-clb1993.html
Key quote (on the subject of C):
I think C has a lot of features that are very important. The way C handles pointers, for example, was a brilliant innovation; it solved a lot of problems that we had before in data structuring and made the programs look good afterwards. C isn't the perfect language, no language is, but I think it has a lot of virtues, and you can avoid the parts you don't like. I do like C as a language, especially because it blends in with the operating system (if you're using UNIX, for example).
I can only guess that Knuth doesn't use C in TAOCP because C isn't defined in the kind of way that he thinks is suitable for teaching. Every port of C to some given architecture has different parameters which effectively render it a different dialect, and there are undefined behaviors all over the place.