wc/src/extra/chc/chc.c

33 lines
674 B
C
Raw Normal View History

2023-09-10 13:05:28 +00:00
#include <stdio.h>
#include <unistd.h>
2023-09-15 07:43:04 +00:00
int chc(FILE* fp)
2023-09-10 13:05:28 +00:00
{
2023-09-15 08:20:42 +00:00
register int c;
2023-09-15 07:43:04 +00:00
int num_chars = 0;
2023-09-15 08:20:42 +00:00
while ((c = getc(fp)) != EOF) {
2023-09-15 07:43:04 +00:00
num_chars ++;
2023-09-10 13:05:28 +00:00
}
2023-09-15 07:43:04 +00:00
printf("%i\n", num_chars);
2023-09-10 13:05:28 +00:00
return 0;
}
int main(int argc, char** argv)
{
if (argc == 1) {
2023-09-15 07:43:04 +00:00
return chc(stdin);
2023-09-10 13:05:28 +00:00
} else if (argc > 1) {
FILE* fp = fopen(argv[1], "r");
if (!fp) {
perror("Could not open file");
return 1;
}
2023-09-15 07:43:04 +00:00
return chc(fp) && fclose(fp);
2023-09-10 13:05:28 +00:00
} else {
2023-09-15 07:43:04 +00:00
printf("Usage: chc file.txt\n");
printf(" or: cat file.txt | chc\n");
printf(" or: chc # read from user-inputted stdin\n");
2023-09-10 13:05:28 +00:00
}
return 0;
}