/**************************************************************/ /* */ /* UNIX 1 / WS 92/93 Gruppe ux803 */ /* 2. Uebung - 2. Aufgabe */ /* */ /* Vorname Name Matrikelnr. */ /* --------- ------- ------------- */ /* Dietmar Dierks 125761 */ /* Roman Czyborra 127221 */ /* Torsten Buller 118794 */ /* Gerasimos Paliatsaras 140956 */ /* */ /* W R E C K . C */ /* */ /**************************************************************/ #include #include #define JA 1 #define NEIN 0 #define ENDLOS JA #define ZL 80 /* maximale Zeilenlaenge */ #define TS 8 /* Tabulatorersetzung */ int istEndezeichen (Zeichen) int Zeichen; { return ((Zeichen == '\n') || (Zeichen == EOF)); } main() { char Speicher[ZL]; int gelesenesZeichen, gegangeneLeerschritte, auszugeben = 0, Wortzahl = 0, schonimWort = NEIN, etwasinZeile = NEIN, vorigeZeileleer = NEIN; while (ENDLOS) { gelesenesZeichen = getchar(); if ((auszugeben == ZL) || istEndezeichen(gelesenesZeichen)) { if (etwasinZeile) { while (auszugeben) { putchar(Speicher[--auszugeben]); }; putchar('\n'); vorigeZeileleer = NEIN; } else { auszugeben = 0; if (!vorigeZeileleer) putchar('\n'); vorigeZeileleer = JA; } if (gelesenesZeichen == EOF) break; if (gelesenesZeichen != '\n') /* dann war ausz.== ZL */ while (!istEndezeichen(getchar())); /* ueberfliegt Zeilenrest */ schonimWort = etwasinZeile = NEIN; } else if (gelesenesZeichen == '\t') { gegangeneLeerschritte = 0; while ((gegangeneLeerschritte < TS) && (auszugeben < ZL)) { Speicher[auszugeben++] = ' '; ++gegangeneLeerschritte; } schonimWort = NEIN; } else { Speicher[auszugeben++] = (char) gelesenesZeichen; if (isspace (gelesenesZeichen)) schonimWort = NEIN; else if (!schonimWort) { ++Wortzahl; schonimWort = etwasinZeile = JA; } } } printf("\n\n(%d Woerter)\n\n", Wortzahl); }