33 lines
674 B
C
33 lines
674 B
C
#include <stdio.h>
|
|
#include <unistd.h>
|
|
|
|
int chc(FILE* fp)
|
|
{
|
|
register int c;
|
|
int num_chars = 0;
|
|
while ((c = getc(fp)) != EOF) {
|
|
num_chars ++;
|
|
}
|
|
printf("%i\n", num_chars);
|
|
return 0;
|
|
}
|
|
|
|
int main(int argc, char** argv)
|
|
{
|
|
if (argc == 1) {
|
|
return chc(stdin);
|
|
} else if (argc > 1) {
|
|
FILE* fp = fopen(argv[1], "r");
|
|
if (!fp) {
|
|
perror("Could not open file");
|
|
return 1;
|
|
}
|
|
return chc(fp) && fclose(fp);
|
|
} else {
|
|
printf("Usage: chc file.txt\n");
|
|
printf(" or: cat file.txt | chc\n");
|
|
printf(" or: chc # read from user-inputted stdin\n");
|
|
}
|
|
return 0;
|
|
}
|