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










