K&R C Exercise 1-11: How to Test the Word Count Program

Exercise 1-11. How would you test the word count program? What kinds of input are most likely to uncover bugs if there are any? Exercise 1-11 has no new program to write. It asks you to think like a tester — to look at the word count program K&R presented in Section 1.5.4 and design …

K&R C Exercise 1-10: Make Tabs and Backspaces Visible

Exercise 1-10. Write a program to copy its input to its output, replacing each tab by t, each backspace by b, and each backslash by \. This makes tabs and backspaces visible. Approach The exercise is deceptively simple to state but teaches something subtle about C: the difference between a character’s value in the program …

K&R C Exercise 1-8: Count Blanks, Tabs, and Newlines

Exercise 1-8. Write a program to count blanks, tabs, and newlines. Approach The solution maintains three independent counters and reads one character at a time using the canonical getchar() loop. The key design decision is using three separate if statements rather than else if. In this case a character can only ever be one thing …

K&R C Exercise 1-7: Print the Value of EOF

Exercise 1-7. Write a program to print the value of EOF. This is one of those exercises that looks trivial — one printf and you’re done — but it opens the door to one of the most important design decisions in the C standard library. Before you can really understand why Chapter 1’s input loops …

K&R C Exercise 1-6: Verify getchar() != EOF is 0 or 1

Exercise 1-6. Verify that the expression getchar() != EOF is 0 or 1. What This Exercise Is Really About This is not a “write a loop” exercise — it is a verification exercise, and the thing being verified is a fundamental rule of C that surprises many beginners: every relational expression in C evaluates to …