#include #include void bedingte_ausgabe(int bedingung, int zahl) { if (bedingung) printf("%6d ", zahl); } int main(int argc, char *argv[]) { int zeichen = 0, woerter = 0, zeilen = 0; int gib_zeichen = 0, gib_woerter = 0, gib_zeilen = 0; int next, i; FILE *eingabe; if (argc >= 3) { eingabe = fopen(argv[2], "r"); if (eingabe == NULL) { perror("kann Eingabe nicht oeffnen"); return 1; } } else { eingabe = stdin; } if (argc >= 2) { switch(argv[1][0]) { case 'w': gib_woerter = 1; break; case 'l': gib_zeilen = 1; break; case 'c': gib_zeichen = 1; break; default: printf("Fehler!\n"); return 1; } } else { gib_woerter = gib_zeilen = gib_zeichen = 1; } next = fgetc(eingabe); while (next != EOF) { if (next == '\n' || next == '\f') zeilen++; if (isspace(next)) woerter++; zeichen++; next = fgetc(eingabe); } bedingte_ausgabe(gib_zeichen, zeichen); bedingte_ausgabe(gib_woerter, woerter); bedingte_ausgabe(gib_zeilen, zeilen); printf("\n"); ende: return 0; }