CROSSREF Manual

C
Sample Listing
57 char line[MAXLINE];
58 int inword;
59 char *p;
60
61 for (nl = 0, nw = 0, nc = 0; fgets(line, MAXLINE, fp) != NULL; nl++)
62 {
63 for (p = line, inword = FALSE; *p != '\0'; p++, nc++)
64 if (!inword && isalnum(*p))
65 {
66 nw++;
67 inword = TRUE;
68 }
69 else if (isspace(*p)
70 || (ispunct(*p) && !((*p == '\'' || *p == '-')
71 && (isalpha(*(p - 1)) && isalpha(*(p + 1))))))
72 inword = FALSE;
73 }
74 total_lines += nl;
75 total_words += nw;
76 total_chars += nc;
77 printf("%s: %d line(s), %ld word(s), %ld character(s)\n",
78 file, nl, nw, nc);
79 }
Figure 5-1. C Sample Program (Page 2 of 2)
5-4