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 }