Prof. Franz Schweiggert Abteilung Angewandte
Informationsverarbeitung 17. Januar 2003
Christian Ehrhardt Blatt 11
Allgemeine Informatik 3 (WS 2002/2003)
Abgabetermin 27.01.2003
Der eine oder andere hat es sicher schon einmal geschafft, Dateien
mit Sonderzeichen (Newline, Backspace usw.) in einem Verzeichnis anzulegen.
Das kann die Ausgabe
von ls unlesbar machen und unter bestimmten Umständen lassen sich solche
Dateien auch nicht ganz so einfach löschen.
In diesem Blatt soll jetzt ein Programm geschrieben werden, das alle
Dateien im aktuellen Verzeichnis (ohne Unterverzeichnisse) findet, deren
Namen ein Zeichen enthält, das kein Buchstabe und keine Ziffer ist
(ev. können auch noch andere Zeichen, etwa Satzzeichen erlaubt sein).
Euer Programm soll dem Nutzer bei jeder solchen Datei die folgenden
Aktionen anbieten und die ausgewählte tatsächlich durchführen:
- nichts
- Weiter mit der nächsten Datei.
- löschen
- Der gefunden Verzeichniseintrag wird gelöscht.
- anzeigen
- Die ersten 1000 Zeichen der Datei werden auf den
Bildschirm ausgegeben, anschließend wird nochmal nach einer Aktion
gefragt.
- kopieren
- Der komplette Inhalt der Datei wird in eine andere
Datei im selben Verzeichnis kopiert. Der Name dieser anderen Datei
entspricht der Inode Nummer der ursprünglichen Datei. Anschließend
wird nochmal nach einer Aktion gefragt. Falls bereits eine Datei mit
diesem Namen existiert, soll eine Fehlermeldung ausgegeben und nicht
kopiert werden.
- beenden
- Das Programm beendet sich sofort, selbst wenn noch nicht
alle Einträge im aktuellen Verzeichnis abgearbeitet wurden.
- In diesem Blatt sind für das Lesen und Schreiben von Dateien
nur die Systemaufrufe read bzw. write zu verwenden, entsprechend
muß zum Öffnen von Dateien open verwendet werden. Funktionen wie
fopen, fgets, fscanf und fprintf sind in diesem Blatt nicht zugelassen.
- Die Headerdatei ctype.h stellt verschiedene Funktionen zur
Verfügung, mit denen festgestellt werden kann, ob ein Zeichen
zu einer bestimmten Klasse gehört, also etwa, ob ein Zeichen ein
Buchstabe ist. Für dieses Blatt sind die Funktionen isalpha und
isgraph besonders interessant.
- Wenn die verschiedenen Aktionen angeboten werden, dann muß
natürlich der Dateiname ausgegeben werden. Dabei empfiehlt es sich,
die ``unerlaubten'' Zeichen durch erlaubte zu umschreiben.
Christian Ehrhardt
2003-01-17