First, we need to be able to read in input. From the examples in the
book, you should know by now that we do this by running
getchar
inside of a while
-loop until we read
in an EOF
. If we want to be able to use the value of
getchar
, we need to assign it to a variable.
#include <stdio.h>
main()
{
int c;
while ((c = getchar()) != EOF)
/* code */;
}
To keep track of how many blanks, tabs, and newlines we come across, we
can create variables for each one of them. For every character we read
in, we use a series of if
-statements that check if the
character happens to be a blank, tab, or newline, in which case we
increment the corresponding variable. Once we stop reading input, we
can print the values of the three variables.
#include <stdio.h>
main()
{
int c, blanks, tabs, lines;
blanks = 0;
tabs = 0;
lines = 0;
while ((c = getchar()) != EOF) {
if (c == ' ')
++blanks;
if (c == '\t')
++tabs;
if (c == '\n')
++lines;
}
printf("blanks: %d, tabs: %d, lines: %d\n", blanks, tabs, lines);
}
Note: for now, there are two ways to pass input into your
programs. You can enter input through the terminal, but for this
program and many of the ones coming up, it may be more convenient to
cat
a file
with the input and pipe its output into your program
(cat /path/to/file | /path/to/exec.) The equivalent command
in Windows is type C:\\path\to\file | C:\\path\to\exec.exe.
Later, we will learn how to get our programs to read from files
directly.