wc

Count words in <50 lines of C
Log | Files | Refs | README

chc.c (682B)


      1 #include <stdio.h>
      2 #include <unistd.h>
      3 
      4 int chc(FILE* fp)
      5 {
      6     register int c;
      7     int num_chars = 0;
      8     while ((c = getc(fp)) != EOF) {
      9         num_chars++;
     10     }
     11     printf("%i\n", num_chars);
     12     return 0;
     13 }
     14 
     15 int main(int argc, char** argv)
     16 {
     17     if (argc == 1) {
     18         return chc(stdin);
     19     } else if (argc > 1) {
     20         FILE* fp = fopen(argv[1], "r");
     21         if (!fp) {
     22             perror("Could not open file");
     23             return 1;
     24         }
     25         return chc(fp) && fclose(fp);
     26     } else {
     27         printf("Usage: chc file.txt\n");
     28         printf("   or: cat file.txt | chc\n");
     29         printf("   or: chc # read from user-inputted stdin\n");
     30     }
     31     return 0;
     32 }