#include void countChar(FILE *fp); void countLines(FILE *fp); void countCaps(FILE *fp); int main(void) { FILE *fp = fopen("dict.dic", "r"); int op; scanf("%d", &op); switch (op) { case (1): { countChar(fp); break; } case (2): { countLines(fp); break; } case (3): { countCaps(fp); break; } default: { break; } } fclose(fp); return 0; } void countChar(FILE *fp) { int cap = 0, low = 0, digits = 0, others = 0; char buf; while ((buf = getc(fp)) != EOF) { if (buf >= 'A' && buf <= 'Z') { cap++; } else if (buf >= 'a' && buf <= 'z') { low++; } else if (buf >= '0' && buf <= '9') { digits++; } else { others++; } } printf("Task1:\n"); printf("capital: %d\n", cap); printf("lowercase: %d\n", low); printf("digit: %d\n", digits); printf("others: %d\n", others); } void countLines(FILE *fp) { // Scan one line first char buf; int lines = 0; int linemax = 0; int linemin = 0; int i = 0; while ((buf = fgetc(fp)) != EOF) { if (buf != '\n') { i++; } else { if (lines == 0) { linemax = i; linemin = i; } else { if (i > linemax) { linemax = i; } if (i < linemin) { linemin = i; } } lines++; i = 0; } } printf("Task2:\nline: %d\n%d characters in max line.\n%d characters in min " "line.\n", lines, linemax, linemin); } void countCaps(FILE *fp) { int low[26] = {}; int cap[26] = {}; char buf; while ((buf = fgetc(fp)) != EOF) { if (buf >= 'a' && buf <= 'z') { low[buf - 'a']++; } else if (buf >= 'A' && buf <= 'Z') { cap[buf - 'A']++; } } printf("Task3:\n"); printf("CAPITAL:\n"); for (int i = 0; i < 26; i++) { printf("%c:%d\n", i + 'A', cap[i]); } printf("LOWERCASE:\n"); for (int i = 0; i < 26; i++) { printf("%c:%d\n", i + 'a', low[i]); } }