#include // read, write #include // open, close, O_RDONLY #include // printf, perror int isBlank(char c) { return c == ' ' || c == '\n' || c == '\t'; } // print line, word and byte count int main(int argc, char* argv[]) { int f = open(argv[1], O_RDONLY); if (f < 0) { perror("open"); return 1; } int lines = 0, words = 0, bytes = 0; char buf; int lastWasBlank = 0; while (read(f, &buf, 1)) { bytes++; if (buf == '\n') lines++; if (isBlank(buf)) { words += !lastWasBlank; lastWasBlank = 1; } else lastWasBlank = 0; } close(f); printf("%d %d %d %s\n", lines, words, bytes, argv[1]); }