This highly readable text is designed for beginning and intermediate C programmers. While focusing on the C programming language, the book emphasizes stylistic issues and software engineering principles that can be applied to any high-level language. In particular, the book stresses the importance of developing programs that are readable, maintainable, portable, and efficient. This book can be used as the primary textbook in a course on C or as a primary book by programmers intent on learning C. The software engineering techniques discussed throughout the text are illustrated in a C interpreter whose source listing is provided on a diskette with the book. Highlighted "bug alerts" offer tips on the common errors made by novice programmers.