/* CAT.C Version 1 24.05.92 */ #include #include #define MAXIMALE_ANZAHL_ZEICHEN_PRO_ZEILE 256 /* Speicher fuer eine Zeile aus einer Datei (mit Reserve) */ char buffer[ MAXIMALE_ANZAHL_ZEICHEN_PRO_ZEILE + 1 ]; int main ( int anzahl_der_argumente, char *feld_der_argumente[] ) { int index; FILE *datei_zeiger; int fehler; if ( anzahl_der_argumente <= 0 ) { printf( " Unmoeglicher Fehler, Anzahl <= 0\n" ); exit( 1 ); }; /* Schleife ueber alle Parameter ( Dateinamen ) */ for ( index = 1; index < anzahl_der_argumente; index ++ ) { /* nun wird die Variabe durch das Oeffnen der Datei mit 'fopen' im Textmodus zum lesen ("r") gesetzt */ datei_zeiger = fopen( feld_der_argumente[ index ], "r" ); /* testen ob der Zeiger gueltig ist */ if ( datei_zeiger == NULL ) { printf( "Die Datei %s wurde nicht gefunden.\n", feld_der_argumente[ index ] ); exit( 1 ); /* Programmende */ }; /* innerhalb der Bedingung dieser Schleife wird geprueft, ob das Ende der Datei erreicht ist. Dazu wird die Funktion 'feof' aufgerufen. Die Schleife wird verlassen, wenn das Ende der Datei erreicht ist. */ while ( feof( datei_zeiger) == 0 ) { /* nun lesen wir eine Zeile ein, ist eine Zeile laenger als angegeben, so wird sie abgeschnitten */ fgets( buffer, MAXIMALE_ANZAHL_ZEICHEN_PRO_ZEILE, datei_zeiger ); /* pruefe ob ein Fehler aufgetreten ist */ if ( ferror( datei_zeiger ) != 0 ) { printf( "Lesefehler in Datei %s.\n", feld_der_argumente[ index ] ); exit( 1 ); /* Programmende */ }; /* ohne Zeilenvorschub ausgeben */ printf( "%s", buffer ); }; /* fertig, Datei schliessen */ fehler = fclose( datei_zeiger ); if ( fehler != 0 ) { printf( "Die Datei %s wurde nicht geschlossen.\n", feld_der_argumente[ index ] ); exit( 1 ); /* Programmende */ } /* naechsten Parameter berabeiten */ }; /* endlich fertig */ return 0; } /* ENDE DER DATEI */