6. Datei-Eingabe und -Ausgabe

Größe: px
Ab Seite anzeigen:

Download "6. Datei-Eingabe und -Ausgabe"

Transkript

1 Dateien: 6. Datei-Eingabe und -Ausgabe sind benannte Objekte, die eine Speicherung von Anwendungsdaten auf einem linearen Adressraum zulassen Persistente Speicherung, d.h. Daten bleiben nach Beendigung der Anwendung und auch nach Abschalten des Systems erhalten Dateisystem als Teil des Betriebssystems sorgt für Zugriff mit Dateinamen, Verzeichnisse, Pufferung, Zugriffsschutz Datei-Daten können beliebig strukturiert sein: Binärdaten Textdaten (lesbarer Text) XML-Datenformate Hinweis auf Typ/Struktur der Datei über Dateityp, z.b. bei bild.jpg wird eine Bilddatei im JPEG-Format angenommen Der Zugriff auf Daten in Dateien findet unter vollständiger Kontrolle des Anwendungsprogramms statt Peter Sobe 1 Datei-Eingabe und -Ausgabe Anwendungsprogramm Anwendung liest, verarbeitet und speichert Daten Bibliotheken und Funktionen der Ausführungsplattform Betriebssystem Dateisystem Platten-Controller Pufferung, Zusatzfunktionen wie z.b. Dialoge zum Auswählen einer Datei Betriebssystem stellt einheitliche Schnittstelle zu Dateisystemen bereit Dateisystem realisiert lineare Blockadressierung, Verzeichnisse, Zugriffsrechte u. mehr Daten werden durch Dateisystem auf ein block-orientiertes Gerät abgebildet Gerätetreiber und Plattencontroller sprechen Platten und dort jeweils Blöcke (Zylinder, Sektor, Kopf) an. Peter Sobe 2

2 Datei-Eingabe und -Ausgabe In C sind eine Reihe von Standarddateien vordefiniert: ZEIGER stdin stdout stderr GERÄTEDATEI Standardeingabe Standardausgabe Standardfehlerausgabe Diese Standard-Datei-Zeiger sind in jedem C-Programm definiert und die zugehörigen Gerätedateien werden bei Start geöffnet. Peter Sobe 3 Zugriffsarten zu Dateien In C existieren zwei Zugriffsarten: High-Level-Zugriff: über Standardbibliothek, gepuffert Low-Level-Zugriff: direkte Funktionen der Betriebssystemschnittstelle, im Anwendungsprozess nicht gepuffert Für jede Zugriffsart steht jeweils eine Menge bestimmter E/A-Funktionen zur Verfügung. Bei beiden Zugriffsarten stellt die Datenverwaltung des Betriebssystems den Inhalt der Datei unabhängig von der Dateiorganisationsform als Strom von Zeichen dar. Zuerst wird der High-Level-Zugriff erklärt, später folgt der Low-Level-Zugriff (ab Folie 28) Peter Sobe 4

3 Zugriffsprinzipien In C existieren folgende Zugriffsprinzipien: zeichenweise E/A (sequentiell) zeilenweise E/A (sequentiell) formatierte E/A (sequentiell) direkte E/A (über direkte Positionierung, nicht sequentiell) Für jedes Zugriffsprinzip steht jeweils eine Menge bestimmter Ein- und Ausgabefunktionen zur Verfügung. Beim formatierten Zugriffsprinzip kann über die Formatsteuerung im Strom von Zeichen andere Objekte, wie Zahlen usw. identifiziert und verarbeitet werden. Peter Sobe 5 Typische Abfolge der Funktionsaufrufe 1. Datei öffnen Nach Angabe eines Dateinamens und des Zugriffsmodus wird eine Datei geöffnet. Nachfolgende Funktionen können ein Datei-Handle (FILE *f) als Referenz auf die geöffnete Datei benutzen. Es können mehrere Dateien gleichzeitig geöffnet werden. 2. (wahlweise Positionieren), Zugriffe: Zugriffe erfolgen standardmäßig von Anfang des Dateiinhalts. Ein s.g. Dateipositionszeiger wird mit jedem Zugriff weitergestellt und aufeinander folgende Zugriffe beziehen sich damit auf fortlaufende Dateiinhalte (sequentielle Organisation, vgl. Abspielen von Musik von CD). Es gibt Funktionen zum expliziten Positionieren. 3. Datei schließen: Soll kein weiterer Zugriff auf die Datei mehr erfolgen, wird die Datei (über die Angabe des Datei-Handle) geschlossen. Damit werden Inhalte und Änderungen für andere Anwendungsprozesse sichtbar. Peter Sobe 6

4 Zugriff auf Text- vs. Binärdateien Textdateien, mit lesbarem Text (z.b. im Editor) Funktionen für zeichenweise Ein- und Ausgabe (E/A): fgetc(), fputc() wird z.b. als file get character gelesen zeilenweise E/A: fgets(), fputs() formatierte E/A: fscanf(), fprintf() Binärdateien, deren Inhalt die interne Repräsentation der Daten enthält, nicht (ohne weiteres) mit einem Editor lesbar blockweise und elementweise E/A: fread(), fwrite() Peter Sobe 7 Zugriffsmodi beim Öffnen einer Datei In C bestimmen die Zugriffsmodi, wie eine Datei prinzipiell zu verarbeiten ist. Die Modi werden bei der Öffnung der Datei als Zeichenfolge angegeben: Zugriffsmodus Ziel r w eine bestehende Datei wird zum Lesen geöffnet. fopen() liefert einen NULL-Zeiger, wenn Datei nicht existiert oder nicht gefunden wird (Pfad!) Datei zum Schreiben öffnen. Die Datei wird erzeugt, wenn sie noch nicht existiert. Existiert die Datei, wird der alte Inhalt überschrieben. Peter Sobe 8

5 Zugriffsmodi (Fortsetzung) Zugriffsmodus Ziel a r+ w+ Datei zum Anfügen öffnen, d.h. es wird am Dateiende weiter geschrieben. Die Datei wird erzeugt, wenn sie noch nicht existiert. Bestehende Datei zum Lesen und Schreiben öffnen. fopen() liefert den NULL-Zeiger zurück, wenn sie nicht existiert. Bestehende Datei zum Schreiben und Lesen öffnen. Existiert die Datei, wird ihr Inhalt überschrieben. Peter Sobe 9 Zugriffsmodus Zugriffsmodi (Fortsetzung) Ziel a+ Die Datei wird zum Lesen und Anfügen geöffnet. Die Datei wird erzeugt, wenn sie nicht existiert. Zusatzangabe zur Unterscheidung von Dateiarten: t b Datei wird als Text- (ASCII-) Datei betrachtet. t ist Standard und kann weggelassen werden. Datei wird als Binär- Datei betrachtet. Die Zusatzangabe wird dem Zugriffsmodus hinzugefügt, z.b. rt, wb, at+, rb+ usw. Peter Sobe 10

6 Text- und Binär-Dateien Fehlt die Zusatzangabe zur Unterscheidung von Dateiarten so wird standardmäßig t für Text- (ASCII-) Datei angenommen. Der Unterschied zwischen Text- und Binärdateien besteht in der Behandlung des Zeilenendes. Wird eine Datei als Textdatei geöffnet, wird das Zeilenende nur durch das Zeichen Linefeed \n ASCII-Wert 10 dargestellt. Wird eine Datei als Binärdatei geöffnet, wird das Zeilenende durch zwei Zeichen CariageReturn+Linefeed \r\n ASCII- Wert dargestellt. Damit hat die Datei eine unterschiedliche Länge! Peter Sobe 11 High-Level-Zugriff zu Dateien FILE-Struktur Zeiger auf Puffer Zeiger auf nächstes Zeichen im Puffer Anzahl Zeichen im Puffer Deskriptor Daten schreiben Daten schreiben Datei-Handle Programm Daten lesen Puffer Daten lesen Datei Peter Sobe 12

7 High-Level-Zugriff: Öffnen und Schließen In C wird eine Datei mit fopen bzw. fclose geöffnet bzw. wieder geschlossen. Dabei muss das Datei-Handle (FILE *) deklariert sein: #include <stdio.h> void main() { FILE *fp; //Deklaration Datei-Handle fp = fopen( c:\\meinefreunde.txt, r );... fclose(fp); //Pfad-Angabe Kann die Datei nicht geöffnet werden, ist fp mit NULL belegt. Deshalb sollte nach fopen das Dateihandle auf NULL getestet werden, ehe eine Verarbeitung eingeleitet wird. Peter Sobe 13 Öffnen und Schließen einer Datei Die Funktion fopen erfordert für Datei- und Ordnernamen die Einhaltung der Konventionen für Dateinamen Die Funktion fclose erzeugt bei erfolgreichem Schließen der Datei den Rückkehrwert 0, sonst einen Fehlercode. Peter Sobe 14

8 High-Level-Zugriff: Zeichenweises Lesen In C wird mit fgetc eine Datei zeichenweise gelesen: #include <stdio.h> void main() { char c; FILE *fp; fp = fopen( c:\\dat.txt, r ); if (fp!=null) { c=fgetc(fp); //Lesen nächstes Zeichen if (c==eof)... //Prüfen auf EndOfFile fclose(fp); Nach jeder Leseoperation sollte auf das Erreichen des Dateiendes (EOF) getestet werden. Peter Sobe 15 High-Level-Zugriff: Zeichenweises Lesen Typischerweise kann man in C-Programmen beim zeichenweisen Lesen und Verarbeiten einer Datei eine nichtabweisende Schleife verwenden: #include <stdio.h> void main() { char c; FILE *fp; fp = fopen( c:\\dat.txt, r ); if (fp!=null) { do { c=fgetc(fp); //Lesen nächstes Zeichen... Verarbeitungsanweisungen while (c!=eof) ; //Prüfen auf End Of File if (! fclose(fp)) // ungleich 0 -> Erfolg printf( Datei erfolgreich geschlossen ); Peter Sobe 16

9 High-Level-Zugriff: Zeichenweises Schreiben In C wird mit fputc eine Datei zeichenweise geschrieben: #include <stdio.h> void main() { char c; FILE *fp; fp = fopen( c:\\dat.txt, w ); c= A ; fputc(c,fp); //Schreiben Zeichen c... fclose(fp); Peter Sobe 17 High-Level-Zugriff: Zeilenweises Lesen In C wird mit fgets eine Datei zeilenweise gelesen. Dabei muss im Programm ein Pufferspeicher als char-feld vereinbart werden, der die eingelesene Zeile aufnimmt. Es ist zweckmäßig, einen char-zeiger zu deklarieren, der durch fgets belegt wird und auf den Anfang des Puffers zeigt bzw. auf NULL im Fehlerfall oder bei Erreichen des Dateiendes. char puffer[81]; char *z; FILE *fp; z=fgets(puffer,81,fp); //Lesen Zeile Peter Sobe 18

10 High-Level-Zugriff: Zeilenweises Lesen Die Funktion fgets arbeitet dabei folgendermaßen: z=fgets(puffer,81,fp); //Lesen Zeile 1. fgets liest eine Zeile bis zum Zeichen \n, falls dieses bis zum 80. Zeichen gefunden wurde. Diese max. 80 gelesenen Zeichen werden in den Puffer geschrieben, einschließlich \n. Dahinter wird ein String-Abschluss \0 geschrieben, damit die Zeile als string verarbeitet werden kann. Der Zeiger z wird auf die puffer Adresse gesetzt. 2. fgets beendet nach der im 2.Argument angegebenen Zeichenzahl (-1), falls bis dahin das \n Zeichen nicht gefunden wurde. Das letzte Zeichen wird für das Schreiben des \0 Zeichens benötigt. Peter Sobe 19 High-Level-Zugriff: Zeilenweises Lesen 3. fgets liest eine Zeile bis zum Dateiende, falls dieses vor Erreichen des 80. Zeichens bzw. und ohne Finden eines \n erreicht wurde. Die gelesenen Zeichen werden in den Puffer geschrieben, einschließlich \n. Dahinter wird ein String-Abschluss \0 geschrieben, damit die Zeile als String weiter verarbeitet werden kann. 4. Kann nichts mehr gelesen werden, wird der Zeiger z auf die NULL Adresse gesetzt. Die NULL-Adresse wird auch bei einem Lesefehler zurückgegeben. Über die Funktion ferror() lässt sich ein Fehler oder ein Lesen über das Dateiende hinaus abklären. Peter Sobe 20

11 High-Level-Zugriff: Zeilenweises Schreiben In C wird mit fputs eine Datei zeilenweise geschrieben: #include <stdio.h> void main() { char c; FILE *fp; char zeile[81]= Das ist eine Zeile! ; char *z=zeile; fp = fopen( c:\\dat.txt, w ); fputs(z, fp);... fclose(fp); //Schreiben Zeile Peter Sobe 21 High-Level-Zugriff: Formatiertes Lesen einer Datei In C wird mit fscanf eine Datei formatiert gelesen: #include <stdio.h> void main() { char c; FILE *fp; int ao; struct abt{char nr[5]; char nam[20]; char leit[7]; a; fp = fopen( c:\\dat.txt, r ); ao=fscanf(fp, %s%s%s, a.nr,a.nam,a.leit); //Lesen Anzahl von Objekten nr,nam,leit // Rückkehrwert ao ist die Anzahl gelesener Obj. // Rueckkehrwert 1 bei EOF... fclose(fp); Peter Sobe 22

12 High-Level-Zugriff: Formatiertes Schreiben In C wird mit fprintf eine Datei formatiert geschrieben: #include <stdio.h> void main() { char c; FILE *fp; int ao; struct abt{char nr[5]; char nam[20]; char leit[7]; a={ 111, Produktion, 4531 ; fp = fopen( c:\\dat.txt, w ); ao=fprintf(fp, %s%s%s, a.nr,a.nam,a.leit); //Schreiben von Objekten nr,nam,leit // Rückkehrwert ao ist die Anzahl geschriebener Obj. // Rueckkehrwert 1 bei EOF... fclose(fp); Peter Sobe 23 High-Level-Zugriff: Zugriff auf Binärdateien (1) Universelle Funktionen fread, fwrite: Lesen mit fread: #include <stdio.h> void main() { FILE *fp; fp = fopen( c:\\dat.bin, r ); n_gelesen=fread(puffer_ptr, laenge, anz_elemente, fp ); fclose(fp); Es werden laenge*anz_elemente Bytes aus der Datei in den Puffer (puffer_ptr) gelesen. Die Anzahl gelesener Elemente wird zurückgegeben. Peter Sobe 24

13 High-Level-Zugriff: Zugriff auf Binärdateien (2) Universelle Funktionen fread, fwrite: Schreiben mit fwrite: #include <stdio.h> void main() { FILE *fp; fp = fopen( c:\\dat.bin, w ); n_geschrieben=fwrite(puffer_ptr, laenge, anz_elemente, fp ); fclose(fp); Es werden laenge*anz_elemente Bytes aus dem Puffer (puffer_ptr) in die Datei geschrieben. Die Anzahl geschriebener Elemente wird zurückgegeben. Peter Sobe 25 High-Level-Zugriff: Positionieren in Dateien (1) Zurücksetzen einer Datei an den Anfang: void rewind(file *fp); fp ist dabei das Datei-Handle. Die Funktion rewind() erzeugt bei Ausführung keinen Rückkehrwert. Positionieroperation auf eine bestimmte Position: int fseek(file *fp, long anz, int pos_mode); Der Parameter anz gibt die Anzahl der Bytes relativ zu pos_mode an, um die der Dateizeiger bewegt werden soll. Für pos_mode gibt es nur drei Möglichkeiten: 0 für Dateianfang (Konstante SEEK_SET), 1 für aktuelle Position (Konstante SEEK_CURR) und 2 für Dateiende (SEEK_END). Bei fehlerfreier Ausführung ist der Rückkehrwert 0, sonst ungleich 0. Peter Sobe 26

14 High-Level-Zugriff: Positionieren in Dateien (2) Beispiel: fseek(fp, -10L, 1); Der Dateizeiger wird ab der aktuellen Zeigerposition (1) um insgesamt 10 Bytes zurückgesetzt. Mit der Funktion long ftell(file *fp) wird der aktuelle Dateizeiger relativ zum Dateianfang (als Anzahl der Bytes ) zurückgegeben. ftell sollte wegen der unterschiedlichen Darstellung des Zeilenendes nur im Binärmodus verwendet werden. Peter Sobe 27 Low-Level Verarbeitung von Dateien Unterschied der Zugriffsarten: Anwendungsprogramm Standardbibliothek High-Level- Zugriffsfunktionen: Vielzahl von Funktionen, E/A-gepuffert, komfortabel Betriebssystem, z.b. Windows, Unix Low-Level- Zugriffsfunktionen: Minimalumfang, einfach, schnell, aber wenig komfortabel Peter Sobe 28

15 Low-Level Verarbeitung von Dateien Eine Datei wird mit der Funktion int open(const char *path, int flags, int zugriffsrechte) geöffnet. path ist dabei der Pfad- und Dateiname. Mit flags werden Zugriffsflags angegeben. Mit dem bitweisen ODER können folgende Konstanten gesetzt sein: O_APPEND neu geschriebene Daten werden angehängt O_CREAT wenn die Datei nicht existiert, wird sie mit dem im Parameter mode angegebenen Eigenschaften erzeugt O_TRUNC wenn die Datei existiert, wird der Inhalt überschrieben O_BINARY und O_TEXT sind zusätzlich möglich Den Parameter zugriffsrechte setzt Zugriffsrechte (insg. 9 Bits). Peter Sobe 29 Low-Level Verarbeitung von Dateien Zugriffsrechte: Flags Lesen (r ), Schreiben (w) und Ausführen (x) für den Eigentümer (u - user), für die Gruppe (g - group) und für den Rest (o others). Kodierung in 9-Bits: user group others r w x r w x r w x Beispiel: bedeutet, dass der Eigentümer alles darf, die Nutzer in der gleichen Gruppe dürfen die Datei zum Lesen öffnen. Zugriffsrechte werden oft durch Oktalzahlen angeben. Eine Stelle fasst 3 Bits zusammen. Im Beispiel ergibt sich 740. Peter Sobe 30

16 Low-Level Verarbeitung: Öffnen open liefert den Dateideskriptor, eine Zahl, zurück. Beispiel: outfile = open(pfad, O_WRONLY O_CREAT O_TRUNC, 0777) Die Oktalzahl O777 setzt alle Zugriffsrechte. Der übergebene Dateideskriptor (hier outfile) ist eine natürliche Zahl ab 5 und bildet den Rückkehrwert von open. Die Werte 0..4 sind reserviert für 0 stdin, 1 stdout, 2 stderror, 3 stdaux, 4 stdprn. Ein Rückkehrwert von 1 signalisiert einen Fehler. Peter Sobe 31 Low-Level Verarbeitung: Close und Read Eine Datei wird mit der Funktion int close(int filedes) geschlossen. Für den Parameter filedes tritt dann der Deskriptor, d.h. z.b. fileout=5. Ein Rückkehrwert von 0 ist in Ordnung. Ein Wert 1 signalisiert einen Fehler. Das Lesen einer Bytefolge mit der Länge len von der Datei mit dem Deskriptor file_descriptor wird mit der Funktion int read(int file_descriptor, void *buf, unsigned len) ausgeführt, wobei die Bytefolge in den Hauptspeicher ab der Adresse buf geschrieben wird. Der Rückkehrwert von read ist die Anzahl der gelesenen Bytes: nbytes = read(infile, rwbuf, 1024); Im Fehlerfall ist der Rückkehrwert 1. Peter Sobe 32

17 Low-Level Verarbeitung: Write Das Schreiben einer Bytefolge der Länge len wird mit der Funktion int write(int file_descriptor, void *buf, unsigned len) aufgerufen. Die zu schreibende die Bytefolge wird dem Hauptspeicher ab der Adresse buf entnommen. Der Rückkehrwert von write ist die tatsächlich geschriebene Anzahl der Bytes. Beispiel: int wlen = write(outfile, wbuf, 1024) ; Im Fehlerfall ist der Rückkehrwert 1. Peter Sobe 33 Low-Level Verarbeitung: Write Beispiel: Das Schreiben einer Fehlermeldung errmsg in die Datei stderr wird mit dem Aufruf write(2, errmsg, strlen(errmsg)); durchgeführt, wobei errmsg wie folgt deklariert ist: char *errmsg ="\ndatei konnte nicht geoeffnet werden."; Peter Sobe 34

18 Low-Level Verarbeitung: Positionieren Funktion lseek: Vergleichbar mit der High-Level-Zugriffsfunktion fseek, hier aber mit Bezug auf File-Deskriptor Parameter: long lseek(int fd, long offset, int origin); fd: File-Deskriptor einer geöffneten Datei offset: Position, an welcher der nächste Zugriff stattfinden soll origin: Ausgangspunkt der offset-betrachtung 0- von Beginn, 1- von aktueller Position, 2- vom Ende Peter Sobe 35 Verschiedene Funktionen für die Dateiarbeit In C werden für Hilfszwecke rund um die Datei- Verarbeitung eine Reihe von Funktionen angeboten: Das sind vor allem Funktionen für die Arbeit mit Verzeichnissen und Laufwerken das Umbenennen und Löschen von Dateien/Ordnern das Positionieren des Dateizeigers und die Fehlerbehandlung Peter Sobe 36

19 Funktionen für die Arbeit mit Verzeichnissen (1) Das aktuelle Laufwerk kann man mit der Funktion void _dos_getdrive(unsigned *lw) ermitteln. Beispiel: unsigned d; _dos_getdrive(&d); //ermittelt aktuelles LW printf("das aktuelle LW ist: %c\n", d + 'A' - 1); Es wird die aktuelle Laufwerks-Nummer zurückgegeben, A=1, B=2, C=3,... Nur in Windows möglich! Andere Betriebssysteme benutzen keine Laufwerke. Peter Sobe 37 Funktionen für die Arbeit mit Verzeichnissen (2) Das aktuelle Laufwerk kann man mit der Funktion void _dos_setdrive(unsigned lw,unsigned *anz) neu gesetzt werden. Beispiel: unsigned n; _dos_setdrive(3,&n); //setzt aktuelles LW auf C printf( Es gibt insgesamt %d LW \n",n); Es wird die max. Anzahl von logischen LW-Nummern zurückgegeben. Peter Sobe 38

20 Funktionen für die Arbeit mit Verzeichnissen (3) UNIX-Dateisysteme (POSIX Standard) Ermitteln des aktuellen Arbeitsverzeichnisses: char *getcwd(char *buf, size_t size); Schreibt das aktuell eingenommene Verzeichnis in die Zeichenkette buf mit maximal size Zeichen. Bei Erfolg wird der Zeiger buf zurückgegeben, anderenfalls NULL. Die Variable errno zeigt den Grund des Fehlers an, z.b. ERANGE wenn size zu kurz ist. Setzen: int chdir(const char *pfad); // gibt 0 bei Erfolg zurück Peter Sobe 39 Durchlaufen von Verzeichnissen Mit den Funktionen unsigned _findfirst(const char *pfad, struct _finddata_t *fblk) und unsigned _findnext( struct _finddata_t *fblk) kann der Inhalt eines Verzeichnisses schrittweise gelesen werden. Der pfad-parameter ist die Adresse eines Pfades (z.b. c:\temp)..), der Parameter fblk ist die Adresse einer Strukturvariablen, die dann die Resultate enthält (z.b.namen der Datei, Größe in Bytes, Änderungsdatum und zeit). Peter Sobe 40

21 Beispiel: Durchlaufen von Verzeichnissen _finddata_t filesfound; intptr_t f = _findfirst("c:\\temp\\*.*",&filesfound); //Alle Dateien in C:\TEMP if ( f!= -1L ) { do { if (!( filesfound.attrib & _A_SUBDIR ) ) { //Verzeichnis ausschliessen printf("%s %Iu\n",filesfound.name,filesfound.size); while ( _findnext(f,&filesfound)==0 ); //Nächste Datei _findclose(f); //Handle schliessen Peter Sobe 41 Funktionen für die Arbeit mit Verzeichnissen Das Anlegen (Erzeugen) eines Ordners erfolgt mit der C- Funktion int mkdir(cont char *pfad). Bei fehlerfreier Ausführung ist der Rückkehrwert 0, sonst 1. char pfad[30]= c:\\temp\\neu ; if (mkdir(pfad)) printf( \nfehler! ); else printf( \nordner erfolgreich erzeugt ); Peter Sobe 42

22 Umbenennen und Löschen von Dateien/Ordnern Das Umbenennen einer Datei/ eines Ordners erfolgt mit der C- Funktion int rename(const char *alt, const char *neu). Die Parameter alt und neu können vollständige Pfadangaben enthalten. Beide Pfade müssen gleich sein. Der Zugriff auf die Datei/Ordner muss nach Zugriffsrechten erlaubt sein. Bei fehlerfreier Ausführung ist der Rückkehrwert 0, sonst 1. char a[20]= c:\\temp\\x.txt ; char n[20]= c:\\temp\\y.txt ; // bei einem Ordner texte würde der Pfad z.b. sein // char a[20]= c:\\temp\\texte ; if (! rename(a,n)) printf( \nfehler! ); Peter Sobe 43 Löschen von Dateien/Ordnern Das Löschen einer Datei erfolgt mit der C-Funktion int remove(const char *name). Gesperrte Dateien: Die im Parameter angegebene Datei darf zu diesem Zeitpunkt nicht in Nutzung sein, d.h. muss geschlossen sein. Bei fehlerfreier Ausführung ist der Rückkehrwert 0, sonst 1. char datei[20]= c:\\temp\\x.txt ; if (! remove(datei)) printf( \nfehler! ); else printf( \ndatei erfolgreich gelöscht ); Peter Sobe 44

23 Löschen von Dateien/Ordnern Das Löschen eines Ordners erfolgt mit der C-Funktion int rmdir(const char *name). Der im Parameter angegebene Ordner muss zu diesem Zeitpunkt leer sein, er darf nicht das aktuelle Arbeitsverzeichnis sein und nicht das Stammverzeichnis des LW. Bei fehlerfreier Ausführung ist der Rückkehrwert 0, sonst 1. char ordner[20]= c:\\temp\\texte ; if (! rmdir(ordner)) printf( \nfehler! ); else printf( \nordner erfolgreich gelöscht ); Peter Sobe 45

8. Datei-Eingabe und -Ausgabe

8. Datei-Eingabe und -Ausgabe Dateien: 8. Datei-Eingabe und -Ausgabe sind benannte Objekte, die eine Speicherung von Anwendungsdaten auf einem linearen Adressraum zulassen Persistente Speicherung, d.h. Daten bleiben nach Beendigung

Mehr

8. Datei-Eingabe und -Ausgabe

8. Datei-Eingabe und -Ausgabe 8. Datei-Eingabe und -Ausgabe In C sind eine Reihe von Standarddateien vordefiniert: ZEIGER stdin stdout stderr GERÄTEDATEI Standardeingabe Standardausgabe Standardfehlerausgabe Diese Standard-FILE-Zeiger

Mehr

6. Eingabe und Ausgabe, Dateien

6. Eingabe und Ausgabe, Dateien 6. Eingabe und Ausgabe, Dateien Möglichkeiten für die Eingabe: Eingabe von der Konsole Nutzer- Eingabefelder in Fensteroberflächen Interaktiv Eingabe durch Webseiten (HTML-FORM-Elemente) Eingabe aus Dateien

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)

Mehr

Ein-/Ausgabe, Dateisystem. Kapitel 9: Ein-/Ausgabe. Programmieren in C für Elektrotechniker. Programmieren in C. Dateisystem. Programmieren in C

Ein-/Ausgabe, Dateisystem. Kapitel 9: Ein-/Ausgabe. Programmieren in C für Elektrotechniker. Programmieren in C. Dateisystem. Programmieren in C für Elektrotechniker Kapitel 9: Dateisystem, Dateisystem E/A-Konzept in UNIX und C UNIX (und damit auch C) verwendet Datenströme (streams) als Konzept zur Verbindung von Programmen mit E/A-Geräten und

Mehr

Dateioperationen Fachhochschule Würzburg-Schweinfurt Prof. Dr. Martin Ochs. Abspeichern und Einlesen von Texten (Strings) in Dateien

Dateioperationen Fachhochschule Würzburg-Schweinfurt Prof. Dr. Martin Ochs. Abspeichern und Einlesen von Texten (Strings) in Dateien Informatik I SS 2003 Dateioperationen 1 Textdateien, Öffnen Abspeichern und Einlesen von Texten (Strings) in Dateien 1. Das Öffnen einer Datei a) Deklaration eines Zeigers auf eine Datei FILE *pfile; b)

Mehr

Dateizugriff unter C

Dateizugriff unter C Begriffe Dateizugriff unter C Datei = sequentielle Ansammlung von Datenbytes, z.b. auf einer Festplatte Auch Bildschirm und Tastatur werden wie Dateien behandelt: Bildschirm ist die Datei stdout Tastatur

Mehr

Programmiersprachen Einführung in C

Programmiersprachen Einführung in C Programmiersprachen Einführung in C Teil 10: Arbeiten mit Prof. Dr. Gliederung Programmiersprachen 1. Von der Maschinensprache zu C 2. Die Struktur von C-Programmen 3. Variable und Datentypen in C 4. Bildschirm

Mehr

Dateien (1) Datenströme

Dateien (1) Datenströme Dateien (1) Datenströme Standardbibliothek bietet sogenannte Datenströme (engl. Streams) Objekte, in die Informationen geschrieben oder von denen Daten gelesen werden können Zum Arbeiten mit Dateien benötigt

Mehr

high level I/O/ low level I/O

high level I/O/ low level I/O Dateiarbeit in C Datei(engl. File) ist ein Menge von Daten (Bytes) auf einem geeigneten Datenträger. Festplatte USB-Stick Früher: Magnetband, Lochband, Lochkartenstapel, Diskette Eine Datei enthält Daten

Mehr

Physische Dateistrukturen

Physische Dateistrukturen Direktzugriffsdateien Seite 1 Charakteristik: Folge von Elementen (physischen Datensätzen) Länge (Speicherbedarf) dynamisch Begriffe: x = < > leere Datei x x = Datei x mit einem Datensatz x1 x =

Mehr

8. Arbeiten mit Dateien

8. Arbeiten mit Dateien 8. Arbeiten mit Dateien www.c-programme.de Stefan Thiemert Kapitel 8 - Seite 1 von 6 8. 1. Allgemeines Bisher haben wir Daten, die wir in unseren Programmen erzeugt und verarbeitet haben, nur über den

Mehr

182. stdio. 183. stdio. Eingabe. Ausgabe. Typisch für Zeileneingabe und Analyse: #include <stdio.h>

182. stdio. 183. stdio. Eingabe. Ausgabe. Typisch für Zeileneingabe und Analyse: #include <stdio.h> 182. stdio Eingabe int getchar (), getc (FILE * fp), fgetc (FILE * fp); char * gets (char * buf), * fgets (char * buf, int len, FILE * fp); int scanf (const char * fmt,...); int fscanf (FILE * fp, const

Mehr

Im Windows Betriebssystem sind Dateien eindeutig gekennzeichnet durch ihren Pfad, Dateinamen und nach einem Punkt die Dateierweiterung.

Im Windows Betriebssystem sind Dateien eindeutig gekennzeichnet durch ihren Pfad, Dateinamen und nach einem Punkt die Dateierweiterung. Dateioperationen Seite 1 von 12 Im Windows Betriebssystem sind Dateien eindeutig gekennzeichnet durch ihren Pfad, Dateinamen und nach einem Punkt die Dateierweiterung. z.b.: c:\testdateien\text.dat //Datendatei

Mehr

Dateien. INE2, Mittwoch / TE402 M. Thaler, Office TG208. ZHAW, M. Thaler, K. Rege, G.

Dateien. INE2, Mittwoch / TE402 M. Thaler, Office TG208.  ZHAW, M. Thaler, K. Rege, G. Dateien INE2, Mittwoch 8.00-9.35 / TE402 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was gehtes? Informationsaustausch Programme tauschen Information mit Umgebung über - Kommandozeilen-Argumente

Mehr

Informatik für Ingenieure (InfIng)

Informatik für Ingenieure (InfIng) Informatik für Ingenieure (InfIng) C - Dateien Doz. Dipl.-Ing. H. Hiller WS 2012/13 Flüchtiger und Nicht-flüchtiger Speicher Daten speichern RAM flüchtiger Speicher Programm blende40 - Fotolia.com Festplatte

Mehr

Tafelübung zu BS 4. Dateioperationen

Tafelübung zu BS 4. Dateioperationen Tafelübung zu BS 4. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2013/bs/

Mehr

Dateien. INE2 M. Thaler, Office TG208. ZHAW, M. Thaler, K. Rege, G. Burkert

Dateien. INE2 M. Thaler, Office TG208.  ZHAW, M. Thaler, K. Rege, G. Burkert Dateien INE2 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was gehtes? Informationsaustausch Programme tauschen Information mit Umgebung über - Kommandozeilen-Argumente - Kanäle bzw.

Mehr

Beispiel / Übung: Prof. Dr. A. Christidis WS 2012/13

Beispiel / Übung: Prof. Dr. A. Christidis WS 2012/13 Beispiel / Übung: Erstellen Sie ein kurzes, plattform-unabhängiges C-Programm ( Konsolenanwendung ), das sich in die Reihe bereits gestarteter Kopien einordnet, sich nach 20 sec (Rechenzeit) abmeldet und

Mehr

file:///h:/dokumente/_fh/ ws /etinfoii/vorlesung/infoii...

file:///h:/dokumente/_fh/ ws /etinfoii/vorlesung/infoii... 7 Dateien Um Daten dauerhaft zu sichern, müssen sie auf den Sekundärspeicher (die Festplatte) abgespeichert werden. Beim Umgang mit Peripheriegeräten unter Windows und UNIX ist zu beachten Die Verbindung

Mehr

E-/A-Funktionalität nicht Teil der Programmiersprache

E-/A-Funktionalität nicht Teil der Programmiersprache C Ein-/Ausgabe C Ein-/Ausgabe C.1 Überblick E-/A-Funktionalität nicht Teil der Programmiersprache Realisisierung durch "normale" Funktionen Bestandteil der Standard-Funktionsbibliothek einfache Programmierschnittstelle

Mehr

FILE *fp; char fname[100];... fp = fopen (fname, rb ); if( fp == NULL ) { perror( fopen );... } // Fehlernachricht auf letzten Fehler, der aufkam

FILE *fp; char fname[100];... fp = fopen (fname, rb ); if( fp == NULL ) { perror( fopen );... } // Fehlernachricht auf letzten Fehler, der aufkam Aktuelle Fileposition ermitteln long pos; pos=ftell(fp); //aktuelle Bytenummer Filelaenge in Bytes fseek(fp,0,seek_end); pos=ftell(fp); Fileendeerkennung int rc; rc = feof (fp) //!= 0 bei Fileende // ==

Mehr

Modellierung und Programmierung

Modellierung und Programmierung Modellierung und Programmierung Dr. Martin Riplinger 9.1.2013 IAM Institut für Angewandte Mathematik Fortgeschrittene Ein- und Ausgabe Bisher: Ein- und Ausgabe nur über die Kommandozeile Erweiterung: Konzept

Mehr

Ausgewählte Bibliotheksfunktionen

Ausgewählte Bibliotheksfunktionen Ausgewählte Bibliotheksfunktionen fopen überträgt den Inhalt des Dateipuffers: Schreibmodus: Dateipuffer wird geschrieben Lesemodus: Puffer wird geleert if (fflush(fp) == EOF) printf("puffer nicht geschrieben\n");

Mehr

Programmieren in C. Die C-Standardbibliothek: Datei Ein- und Ausgabe. Prof. Dr. Nikolaus Wulff

Programmieren in C. Die C-Standardbibliothek: Datei Ein- und Ausgabe. Prof. Dr. Nikolaus Wulff Programmieren in C Die C-Standardbibliothek: Datei Ein- und Ausgabe Prof. Dr. Nikolaus Wulff Das Dateisystem In C erfolgt die gesamte Ein- und Ausgabe durch Lesen oder Schreiben von Strömen (stream). Periphere

Mehr

Algorithmen & Programmierung. Persistenz - Arbeit mit Dateien

Algorithmen & Programmierung. Persistenz - Arbeit mit Dateien Algorithmen & Programmierung Persistenz - Arbeit mit Dateien Flüchtige und nichtflüchtige Daten Situation Wir haben bisher nur Programme geschrieben, deren Berechnungsergebnisse und Dateneingaben nach

Mehr

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN 3. UNIX/Linux-Dateisysteme und zugehörige Systemaufrufe und Kommandos (Teil I) Wintersemester 206/7 UNIX/Linux-Dateisystem(e) Systemaufrufe zur Dateiarbeit:

Mehr

Einführung in die Programmierung für Physiker. Die Programmiersprache C Ein- und Ausgabe

Einführung in die Programmierung für Physiker. Die Programmiersprache C Ein- und Ausgabe Einführung in die Programmierung für Physiker Die Programmiersprache C Ein- und Ausgabe Marc Wagner Institut für theoretische Physik Johann Wolfgang Goethe-Universität Frankfurt am Main WS 2017/18 putchar,

Mehr

Michael Dienert. 8. Dezember 2016

Michael Dienert. 8. Dezember 2016 C für Unverdrossene Michael Dienert 8. Dezember 2016 Vorbemerkung Natürlich könnte ich als erstes C-Programm Hello World nehmen. Um mit dem Kompiler zu spielen, kann man aber auch gleich einen sinnvolleren

Mehr

Programmiertechnik 1. Unit 12: Programmiersprache C - Betriebssystemschnittstellen. Andreas Polze 1

Programmiertechnik 1. Unit 12: Programmiersprache C - Betriebssystemschnittstellen. Andreas Polze 1 Programmiertechnik 1 Unit 12: Programmiersprache C - Betriebssystemschnittstellen Andreas Polze 1 Ablauf Zugriff auf Betriebssystemdienste Dateideskriptoren low-level I/O read and write open, creat, close,

Mehr

Tafelübung zu BS 5. Dateioperationen

Tafelübung zu BS 5. Dateioperationen Tafelübung zu BS 5. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2014/bs/

Mehr

I/O-Hardware Grundlagen. Ein- und Ausgabe. Memory-Mapped I/O. Device Controller

I/O-Hardware Grundlagen. Ein- und Ausgabe. Memory-Mapped I/O. Device Controller I/O-Hardware Grundlagen Grundlagen von Ein-/Ausgabe-Hardware und Software I/O-Software-Schichten Wir betrachten I/O-Hardware wie Hard Disks, Bildschirme, Drucker etc. hier eigentlich als Blackbox, die

Mehr

File I/O. Persistieren von Daten. Gastvorlesung Ralph Erdt erdt (bei) informatik.fh-wiesbaden.de

File I/O. Persistieren von Daten. Gastvorlesung Ralph Erdt erdt (bei) informatik.fh-wiesbaden.de File I/O, Ralph Erdt, erdt (bei) informatik.fh-wiesbaden.de Seite 1 File I/O Persistieren von Daten Gastvorlesung - 18.01.10 Ralph Erdt erdt (bei) informatik.fh-wiesbaden.de File I/O, Ralph Erdt, erdt

Mehr

Übersicht. Informatik 1 Teil 10 Dateien

Übersicht. Informatik 1 Teil 10 Dateien Übersicht 10.1 Permanente Datenspeicher 10.2 Festplatte (Bild) 10.3 Dateien 10.4 Dateien öffnen 10.5 Der Filepointer 10.6 Schreiben in Dateien - die Funktion fprintf( ) 10.7 Lesen aus Dateien die Funktion

Mehr

Input, Output, Dateien

Input, Output, Dateien Input, Output, Dateien C-Kurs 2013, 1. Tutorium Armelle Vérité http://wiki.freitagsrunde.org 8. September 2013 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License. 1 / 21

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 9 I/O (2) Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät UNIX I/O UNIX I/O: ähnlich wie Standard-I/O, jedoch File-Deskriptoren

Mehr

Dateien lesen und schreiben mit php

Dateien lesen und schreiben mit php Dateien lesen und schreiben mit php (fopen(), fgets(), fread(), fwrite, fclose(), fputs(), file_get_contents()) Der Dateizugriff (anfügen und lesen) fopen(filename, mode) Öffnen vom lokalen Dateisystem

Mehr

5. Dateioperationen. Tafelübung zu BSRvS1. Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund

5. Dateioperationen. Tafelübung zu BSRvS1. Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund Tafelübung zu BSRvS1 5. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/exercises/

Mehr

Programmierung mit C Datei-Ein- und Ausgabe

Programmierung mit C Datei-Ein- und Ausgabe Programmierung mit C Datei-Ein- und Ausgabe Datei-Ein- und Ausgabe Datei Datenobjekt, bei dem die Daten auf einem externen Datenträger (z. B. Festplatte) abgelegt werden Das Öffnen einer Datei erzeugt

Mehr

Betriebssysteme. Tafelübung 5. Dateioperationen. Daniel Friesel.

Betriebssysteme. Tafelübung 5. Dateioperationen. Daniel Friesel. Betriebssysteme Tafelübung 5. Dateioperationen https://ess.cs.tu-dortmund.de/de/teaching/ss2018/bs/ Daniel Friesel daniel.friesel@tu-dortmund.de https://ess.cs.tu-dortmund.de/~df AG Eingebettete Systemsoftware

Mehr

INE1 Ein-/Ausgabe, Dateien (Files) Einführung Datenstruktur und Operationen Textdateien Binärdateien Standard Streams

INE1 Ein-/Ausgabe, Dateien (Files) Einführung Datenstruktur und Operationen Textdateien Binärdateien Standard Streams INE1 Ein-/Ausgabe, Dateien (Files) Einführung Datenstruktur und Operationen Textdateien Binärdateien Standard Streams Einführung 2 von 42 Einführung Wie kann ein Programm mit seiner Umgebung Information

Mehr

und noch ein Spiel Programmiersprache(n) für technische Anwendungen Dipl.math Gerd H. Neugebauer

und noch ein Spiel Programmiersprache(n) für technische Anwendungen Dipl.math Gerd H. Neugebauer Tic Tac Toe (auch: Drei gewinnt) ist ein klassisches, einfaches Zweipersonen Strategiespiel, dessen Geschichte sich bis ins 12. Jahrhundert v. Chr. zurückverfolgen lässt. Tic Tac Toe war auch eines der

Mehr

Rechner muß unterschiedliche Geräte bedienen können. zeichenorientierte Geräte (character devices, unstructured devices)

Rechner muß unterschiedliche Geräte bedienen können. zeichenorientierte Geräte (character devices, unstructured devices) Betriebssysteme Folie 6-1 6 Dateiverwaltung Rechner muß unterschiedliche Geräte bedienen können zeichenorientierte Geräte (character devices, unstructured devices) (z.b. Sichtgeräte, Drucker oder Übertragungsleitungen

Mehr

GI Vektoren

GI Vektoren Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung

Mehr

Programmieren in C++

Programmieren in C++ Programmieren in C++ SS 2012 Vorlesung 7, Dienstag 19. Juni 2012 (Eingabe/Ausgabe, Optionen, ASSERT_DEATH) Prof. Dr. Hannah Bast Lehrstuhl für Algorithmen und Datenstrukturen Institut für Informatik Universität

Mehr

Die elementare Ausgabe von Daten auf externe Medien, wie Dateien und das Einlesen davon wird demonstriert.

Die elementare Ausgabe von Daten auf externe Medien, wie Dateien und das Einlesen davon wird demonstriert. Ein- und Ausgabe Die elementare Ausgabe von Daten auf externe Medien, wie Dateien und das Einlesen davon wird demonstriert. Komplexe E/A-Operationen werden erst diskutiert, nachdem das Klassenkonzept erarbeitet

Mehr

Programmieren 1 C Überblick

Programmieren 1 C Überblick Programmieren 1 C Überblick 1. Einleitung 2. Graphische Darstellung von Algorithmen 3. Syntax und Semantik 4. Einstieg in C: Einfache Sprachkonstrukte und allgemeiner Programmaufbau 5. Skalare Standarddatentypen

Mehr

Übungen zur Systemprogrammierung 1 Michael Golm, Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4,

Übungen zur Systemprogrammierung 1 Michael Golm, Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 23 Überblick über die 4. Übung Überblick über die 4. Übung Dateisystem: Systemaufrufe Aufgabe 2: qsort Infos zur Aufgabe 4: fork, exec 130 24 open / close read / write lseek chmod umask utime truncate

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 15 Dateiverwaltung, Ein- und Ausgabe...15-2 15.1 Grundlagen...15-3 15.2 Arbeit mit Dateien...15-5 15.2.1 Der Datentyp FILE... 15-5 15.2.2 Öffnen und Schießen von Dateien... 15-6 15.2.3 Verwaltung

Mehr

6.2 Extras/Lesen aus Dateien

6.2 Extras/Lesen aus Dateien 6.2 Extras/Lesen aus Dateien 6.2.1 Problem Aus einer Datei sollen Spannungswerte eingelesen werden. Anschließend sollen Anzahl, Minimum, Maximum, AMW und Standardabweichung ermittelt und ausgegeben werden.

Mehr

Strukturen können wie normale Variablen an Funktionen übergeben werden. Strukturen können auch Ergebnis einer Funktion sein

Strukturen können wie normale Variablen an Funktionen übergeben werden. Strukturen können auch Ergebnis einer Funktion sein 19 Strukturen 19.2Strukturen als Funktionsparameter 19.2 Strukturen als Funktionsparameter Strukturen können wie normale Variablen an Funktionen übergeben werden Übergabesemantik: call by value Funktion

Mehr

Einteilung von Dateien. Streams

Einteilung von Dateien. Streams Einteilung von Dateien Streams allgemeines Modell für bewegte Daten, wobei Daten (Bytes) zwischen dem Hauptspeicher und einer Quelle oder einem Ziel bewegt werden Quelle oder Ziel können sein Datenträger

Mehr

Programmierkurs Kapitel 4: Dateien Seite 1. Verwaltungfeld im Speicher. 4.1 Alternativen zur Programmierung der Eingabe und der Ausgabe

Programmierkurs Kapitel 4: Dateien Seite 1. Verwaltungfeld im Speicher. 4.1 Alternativen zur Programmierung der Eingabe und der Ausgabe Programmierkurs Kapitel 4: Dateien Seite 1 4 Dateien Verwaltungfeld im Speicher Dateivariable im Programm Dateizeiger Schreib-/Lesefeld im Programm EOF 4.1 Alternativen zur Programmierung der Eingabe und

Mehr

Was machen wir heute? Betriebssysteme Tutorium 10. Frage 10.1.a. Frage 10.1.a

Was machen wir heute? Betriebssysteme Tutorium 10. Frage 10.1.a. Frage 10.1.a Was machen wir heute? Betriebssysteme Tutorium 10 Philipp Kirchhofer philipp.kirchhofer@student.kit.edu http://www.stud.uni-karlsruhe.de/~uxbtt/ Lehrstuhl Systemarchitektur Universität Karlsruhe (TH) 1

Mehr

Datei-Verarbeitung. Peter Sobe 60

Datei-Verarbeitung. Peter Sobe 60 Datei-Verarbeitung Eine Datei: ist ein benanntes Objekt im Dateisystem, ist eine lineare Anordnung einzelner Bytes, die geschrieben, bzw. gelesen werden können, kann vergrößert (Schreiben bzw. Anhängen),

Mehr

I Dateisysteme. I.1 Allgemeine Konzepte. Einordnung. Prozessor (CPU, Central processing unit) Ein-, Ausgabegeräte/ Periphere Geräte (I/O Devices)

I Dateisysteme. I.1 Allgemeine Konzepte. Einordnung. Prozessor (CPU, Central processing unit) Ein-, Ausgabegeräte/ Periphere Geräte (I/O Devices) I Dateisysteme I Dateisysteme I.1 Allgemeine Konzepte Einordnung Prozessor (CPU, Central processing unit) Hauptspeicher (Memory) Ein-, Ausgabegeräte/ Periphere Geräte (I/O Devices) externe Schnittstellen

Mehr

Permanente Datenspeicherung. Permanente Datenspeicherung. Agenda für heute, 1. Juni, 2006

Permanente Datenspeicherung. Permanente Datenspeicherung. Agenda für heute, 1. Juni, 2006 Agenda für heute, 1. Juni, 2006 Permanente Datenspeicherung Deklaration von Files Files verwenden Filetypen: Drei Kategorien Sequentielle Files Permanente Datenspeicherung Daten, die während der Ausführung

Mehr

Ein- und Ausgabe. C - Kurs Mario Bodemann. 15. September 2010

Ein- und Ausgabe. C - Kurs Mario Bodemann. 15. September 2010 Ein- und Ausgabe C - Kurs 2010 Mario Bodemann 15. September 2010 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 1 / 46 Inhaltsverzeichnis 1 Wiederholung

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 23

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf  Seite 1 von 23 Kapitel 16 Datei Aus- und Eingabe Seite 1 von 23 Datei Aus- und Eingabe - Für die Ausgabe auf Dateien und die Eingabe von Dateien werden die Streams ofstream und ifstream verwendet. - Sie sind in der Bibliothek

Mehr

Programmiersprachen Einführung in C

Programmiersprachen Einführung in C Programmiersprachen Einführung in C Teil 2: Prof. Dr. Unser erstes C-Programm int main (int argc, char *argv[]) int i; int sum = 0; for (i = 0; i

Mehr

Übungen zu Systemnahe Programmierung in C (SPiC) Sommersemester 2018

Übungen zu Systemnahe Programmierung in C (SPiC) Sommersemester 2018 Übungen zu Systemnahe Programmierung in C (SPiC) Sommersemester 2018 Übung 8 Benedict Herzog Sebastian Maier Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl für Verteilte

Mehr

Einführung in die Programmierung für Physiker. Die Programmiersprache C Ein- und Ausgabe

Einführung in die Programmierung für Physiker. Die Programmiersprache C Ein- und Ausgabe Einführung in die Programmierung für Physiker Die Programmiersprache C Ein- und Ausgabe Marc Wagner Institut für theoretische Physik Johann Wolfgang Goethe-Universität Frankfurt am Main WS 2013/14 putchar,

Mehr

Teil 7: Präprozessor und Ein-/Ausgabe Gliederung

Teil 7: Präprozessor und Ein-/Ausgabe Gliederung Teil 7: Präprozessor und Ein-/Ausgabe Gliederung Präprozessor Streams Dateioperationen Kommandozeilenparameter Präprozessor Streams Dateioperationen Kommandozeilenparameter Präprozessor 8.2 Präprozessor

Mehr

Eine Mini-Shell als Literate Program

Eine Mini-Shell als Literate Program Eine Mini-Shell als Literate Program Hans-Georg Eßer 16.10.2013 Inhaltsverzeichnis 1 Eine Mini-Shell 1 1.1 Einen Befehl parsen......................... 2 1.2 Was tun mit dem Kommando?...................

Mehr

Inhalt Streams Eingabe / Ausgbe in C Dateizugriff in C Eingabe / Ausgabe in C++ Dateizugriff in C++ Error Handling

Inhalt Streams Eingabe / Ausgbe in C Dateizugriff in C Eingabe / Ausgabe in C++ Dateizugriff in C++ Error Handling Input / Output in C, C++ Inhalt Streams Eingabe / Ausgbe in C Dateizugriff in C Eingabe / Ausgabe in C++ Dateizugriff in C++ Error Handling Page 1 Ausgaben in C,C++ - generell Fuer C basierte Ausgaben:

Mehr

E.1 Allgemeine Konzepte (3) E.1 Allgemeine Konzepte (2) E.1 Allgemeine Konzepte. Datei. Einordnung. Katalog / Verzeichnis

E.1 Allgemeine Konzepte (3) E.1 Allgemeine Konzepte (2) E.1 Allgemeine Konzepte. Datei. Einordnung. Katalog / Verzeichnis E Dateisysteme E Dateisysteme (3) Einordnung Prozessor (CPU, Central processing unit) Datei speichert Daten oder Programme Katalog Verzeichnis erlaubt Benennung der Dateien enthält Zusatzinformationen

Mehr

Konzepte von Betriebssystem-Komponenten. I/O: von der Platte zur Anwendung

Konzepte von Betriebssystem-Komponenten. I/O: von der Platte zur Anwendung Konzepte von Betriebssystem-Komponenten I/O: von der Platte zur Anwendung SS 05 Igor Engel Igor.Engel@informatik.stud.uni-erlangen.de 1 1 Einleitung 2 Übersicht 3 Systemaufrufe Beispiel in Unix 4 Dateien

Mehr

Ein- und Ausgabe. C - Kurs Mario Bodemann. 15. September 2010

Ein- und Ausgabe. C - Kurs Mario Bodemann. 15. September 2010 Ein- und Ausgabe C - Kurs 2010 Mario Bodemann 15. September 2010 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 1 / 46 Inhaltsverzeichnis 1 Wiederholung

Mehr

U5 Verzeichnisse und Sortieren

U5 Verzeichnisse und Sortieren U5 Verzeichnisse und Sortieren U5 Verzeichnisse und Sortieren Linux-Benutzerumgebung Fehlerbehandlung POSIX-Verzeichnis-Systemschnittstelle Datei-Attribute in Inodes U5.1 Verzeichnisse öffnen: opendir(3)

Mehr

Ein- und Ausgabe mit Dateien

Ein- und Ausgabe mit Dateien Ein- und Ausgabe mit Dateien Edouard Lamboray Informatik I für D-ITET (2004) Ein- und Ausgabekonzepte in C und C++ fstream header Streamobjekt Files schreiben und lesen Argumente von main Vorbemerkungen

Mehr

Tafelübung zu BS 5. Dateioperationen

Tafelübung zu BS 5. Dateioperationen Tafelübung zu BS 5. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2012/bs/

Mehr

Tafelübung zu BS 5. Dateioperationen

Tafelübung zu BS 5. Dateioperationen Tafelübung zu BS 5. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2012/bs/

Mehr

MatLab Teil 2: weitere Operationen, Dateien und Bildformate

MatLab Teil 2: weitere Operationen, Dateien und Bildformate MatLab Teil 2: weitere Operationen, Dateien und Bildformate Dr. Martin Gollbach 1 Weitere Operationen 2 Vergleichsoperationen Gleichheit Symbol: == Bsp.: if I == J end A(I,J) = 1; Ungleichheit Symbol:

Mehr

Das C Seminar Walter Herglotz WJH-BOD 1

Das C Seminar Walter Herglotz WJH-BOD 1 Arbeiten mit Dateien Programme bearbeiten Daten. Solange wir zur Eingabe nur die Tastatur und zur Ausgabe nur den Bildschirm benutzen, sind die Ergebnisse der Bearbeitung nach dem Programmende verschwunden.

Mehr

4.3 Directories / Filesysteme

4.3 Directories / Filesysteme I-Node H. Weber, FH Wiesbaden WS 2008/09 Systemprogrammierung Kap. 4.3 Seite 1 von 32 Hierfür gibt es eine ganze Reihe von Systemaufrufen und Subroutines. Wir beginnen mit chroot Root Directory ändern

Mehr

Übersicht. C Ein-/Ausgabe und Kontrollanweisungen. I/O-Funktionen aus stdio. printf() Ein-/Ausgabe. Kontrollanweisungen.

Übersicht. C Ein-/Ausgabe und Kontrollanweisungen. I/O-Funktionen aus stdio. printf() Ein-/Ausgabe. Kontrollanweisungen. Übersicht Ein-/Ausgabe C Ein-/Ausgabe und Kontrollanweisungen Kontrollanweisungen 1 2 I/O-Funktionen aus stdio printf() printf() - zum formatierten Ausgaben #include scanf() - zum formatierten

Mehr

Dienstspezifikation nach RFC 2396 193

Dienstspezifikation nach RFC 2396 193 Dienstspezifikation nach RFC 2396 193 Für die Kombination aus Rechnernamen (oder alternativ einer IP-Adresse) und einer Portnummer gibt es mit RFC 2396 einen Standard: hostport host [ : port ] host hostname

Mehr

Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin

Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin Fakutltät IV Technische Universität Berlin 5. Mai 2014 Inhaltsverzeichnis 1 2 3 4 5 6 7 Überblick Beispielprogramm in Java Beispielprogramm in C 1 2 3 4 5 6 7 Beispielprogramm in Java Beispielprogramm

Mehr

Einführung in die C-Programmierung

Einführung in die C-Programmierung Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).

Mehr

Zeiger in C und C++ Zeiger in Java und C/C++

Zeiger in C und C++ Zeiger in Java und C/C++ 1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für Referenztypen (Klassen und Arrays) verwendet,

Mehr

1. Allgemeine Datei (Binärdatei mit formatierten Inhalt)

1. Allgemeine Datei (Binärdatei mit formatierten Inhalt) Datei ein komplexer Datentyp, der primär zur dauerhaften (persistenten) Speicherung von Daten auf einen externen Datenträger dient die wichtigsten Operationen, die mit Dateien durchgeführt werden, sind

Mehr

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch darstellung Arbeiten mit darstellung werden im Computer durch (kleine) Zahlen dargestellt in C können im Datentyp char gespeichert werden, dieser umfasst ein Byte und gilt als Ganzzahltyp darstellung Arbeiten

Mehr

Ein- und Ausgabe mit Dateien

Ein- und Ausgabe mit Dateien Ein- und Ausgabe mit Dateien Edouard Lamboray Informatik I für D-ITET (2004) Ein- und Ausgabekonzepte in C und C++ fstream header Streamobjekt Files schreiben und lesen Argumente von main 2 Vorbemerkungen

Mehr

Softwareentwicklung I

Softwareentwicklung I FAKULTÄT FÜR TECHNIK STUDIENGÄNGE ELEKTROTECHNIK / INFORMATIONSTECHNIK (ET/IT) TECHNISCHE INFORMATIK (TI) MECHATRONIK (MEC) MEDIZINTECHNIK (MT) Softwareentwicklung I Arbeiten mit Visual Studio 2010 Projekt

Mehr

Übungen zu Systemnahe Programmierung in C (SPiC)

Übungen zu Systemnahe Programmierung in C (SPiC) Übungen zu Systemnahe Programmierung in C (SPiC) Peter Wägemann, Sebastian Maier, Heiko Janker (Lehrstuhl Informatik 4) Übung 8 Sommersemester 2015 Inhalt POSIX Verzeichnisschnittstelle opendir, closedir,

Mehr

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

Linux/Unix Systemprogrammierung

Linux/Unix Systemprogrammierung Linux/Unix Systemprogrammierung Pablo Yánez Trujillo Poolmanager Team Universität Freiburg August 14, 2006 Pablo Yánez Trujillo Linux/Unix Systemprogrammierung Slide 1 of 48 Einführung Wer mehr über sein

Mehr

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Dateikanäle. Inhalt. Dateien & Dateikanäle Dateikanäle Ein-/Ausgaben

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Dateikanäle. Inhalt. Dateien & Dateikanäle Dateikanäle Ein-/Ausgaben Übungen zu Systemnahe Programmierung in C (SPiC) Sebastian Maier (Lehrstuhl Informatik 4) Übung 8 Verwendung von stat Sommersemester 2016 Lehrstuhl Informatik 4 Übungen zu SPiC (SS 2016) 2 15 Ein- und

Mehr

6 Ein- und Ausgabe. Bisher war unsere (Bildschirm-) Ausgabe leichtflüchtig (

6 Ein- und Ausgabe. Bisher war unsere (Bildschirm-) Ausgabe leichtflüchtig ( 6 Ein- und Ausgabe Bisher war unsere (Bildschirm-) Ausgabe leichtflüchtig ( Drucken war hoffnungslos übertrieben); heute lernen wir, wie wir die Ergebnisse unserer Programme abspeichern können, um sie

Mehr

MMC/SD FAT 16 mit AVR und C

MMC/SD FAT 16 mit AVR und C MMC/SD FAT 16 mit AVR und C Die Bibliothek von Roland Riegel enthält einen kompletten FAT16 Zugriff auf MMC/SD Karten über den SPI eines µc. Anforderungen: - SPI oder 5 freie PINs am Controller - Für den

Mehr

RO-Tutorien 15 und 16

RO-Tutorien 15 und 16 Tutorien zur Vorlesung Rechnerorganisation Tutorienwoche 2 am 04.05.2011 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft

Mehr

Dateiverarbeitung. 2006 Pearson Education, Inc. All rights reserved.

Dateiverarbeitung. 2006 Pearson Education, Inc. All rights reserved. 1 9 Dateiverarbeitung 2 9.1 Einführung 9.2 Die Datenhierarchie 9.3 Daten und Ströme 9.4 Erzeugung einer sequenziellen Datei 9.5 Daten von einer sequenziellen Datei lesen 9.6 Eine sequenzielle Datei aktualisieren

Mehr

Übersicht Shell-Scripten

Übersicht Shell-Scripten !!!! Wichtig: Bei Shell-Scripten enden die Zeilen nicht mit einem Strichpunkt!!!! Erste Zeile eines Shell-Scripts: #! /bin/bash Variablen in Shell-Scripts: Variablennamen müssen mit einem Buchstaben beginnen,

Mehr