|
|
1.1 ! root 1: /* wc line and word count */ ! 2: ! 3: #include <stdio.h> ! 4: ! 5: main(argc, argv) ! 6: char **argv; ! 7: { ! 8: int i, token; ! 9: register FILE *fp; ! 10: long linect, wordct, charct; ! 11: long tlinect=0, twordct=0, tcharct=0; ! 12: char *wd; ! 13: register int c; ! 14: ! 15: wd = "lwc"; ! 16: if(argc > 1 && *argv[1] == '-') { ! 17: wd = ++argv[1]; ! 18: argc--; ! 19: argv++; ! 20: } ! 21: ! 22: i = 1; ! 23: fp = stdin; ! 24: do { ! 25: if(argc>1 && (fp=fopen(argv[i], "r")) == NULL) { ! 26: fprintf(stderr, "wc: can't open %s\n", argv[i]); ! 27: continue; ! 28: } ! 29: linect = 0; ! 30: wordct = 0; ! 31: charct = 0; ! 32: token = 0; ! 33: for(;;) { ! 34: c = getc(fp); ! 35: if (c == EOF) ! 36: break; ! 37: charct++; ! 38: if(' '<c&&c<0177) { ! 39: if(!token) { ! 40: wordct++; ! 41: token++; ! 42: } ! 43: continue; ! 44: } ! 45: if(c=='\n') ! 46: linect++; ! 47: else if(c!=' '&&c!='\t') ! 48: continue; ! 49: token = 0; ! 50: } ! 51: /* print lines, words, chars */ ! 52: wcp(wd, charct, wordct, linect); ! 53: if(argc>1) { ! 54: printf(" %s\n", argv[i]); ! 55: } else ! 56: printf("\n"); ! 57: fclose(fp); ! 58: tlinect += linect; ! 59: twordct += wordct; ! 60: tcharct += charct; ! 61: } while(++i<argc); ! 62: if(argc > 2) { ! 63: wcp(wd, tcharct, twordct, tlinect); ! 64: printf(" total\n"); ! 65: } ! 66: exit(0); ! 67: } ! 68: ! 69: wcp(wd, charct, wordct, linect) ! 70: register char *wd; ! 71: long charct; long wordct; long linect; ! 72: { ! 73: while (*wd) switch (*wd++) { ! 74: case 'l': ! 75: printf("%7ld", linect); ! 76: break; ! 77: ! 78: case 'w': ! 79: printf("%7ld ", wordct); ! 80: break; ! 81: ! 82: case 'c': ! 83: printf("%7ld", charct); ! 84: break; ! 85: } ! 86: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.