![Page 1: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/1.jpg)
Informatik IIGrundlagen der Programmierung
Programmieren in C
Module und Bibliotheken 1
Hochschule Fulda – FB ET
Sommersemester 2010
http://www.rz.hs-fulda.de/et
Peter Klingebiel, HS Fulda, DVZ
![Page 2: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/2.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 2
Module 1
• Um größere Programmprojekte überschaubar und sicherer zu machen, wird die Aufgabe in kleinere Teilaufgaben (= Module) zerlegt Reduktion der Komplexität separates Entwickeln und Testen Wiederverwendbarkeit von Programmteilen Erstellen von Programmbibliotheken
• Abstraktion von Daten und Funktionen• Kapselung von Daten
![Page 3: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/3.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 3
Module 2
Black Box • Ein Modul in C ist eine Quelldatei, in der eine
oder mehrere Funktionen zusammengefasst werden
• Interne Funktionen möglich, die nur innerhalb des Moduls sichtbar sind
• Interne Variable möglich, die nur innerhalb des Moduls zugreifbar sind
Definition als static
![Page 4: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/4.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 4
Module 3
• Projekt: Module und Bibliotheken
![Page 5: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/5.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 5
Module 4
• Schnittstellen eines Moduls, Funktionen und ggfs. Variablen in Headerdatei beschrieben
• Getrennte Übersetzung der Quelldateien und Erzeugen von Objektkode
• Erstellen von Programmbibliotheken zur leichten Wiederverwendbarkeit
• Zusammenmontieren des ausführbaren Programms aus Objektkode der Quellen und der Module sowie aus Bibliotheken
![Page 6: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/6.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 6
Module 5
• Beispiel: Zinsberechnung zinsen2.c
![Page 7: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/7.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 7
Module 6
• Beispiel: Moduldatei zpower.c
![Page 8: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/8.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 8
Module 7
• Beispiel: Moduldatei zzins.c
![Page 9: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/9.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 9
Module 8
• Beispiel: Headerdatei zinsen.h
![Page 10: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/10.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 10
Module 9
• Beispiel: Hauptprogramm zinsen4.c
![Page 11: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/11.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 11
Module 10
• Steuerung der Compilierung bzw. der durchzuführenden Aktionen zur Erzeugung eines Programms oder Objekts durch sog. Makefiles
• Makefiles beschreiben die Abhängigkeit eines Objekts oder Programms von Quelldateien, Modulen und Bibliotheken
• beschreiben die notwendigen Aktionen, um Programme, Objektfiles usw. zu erstellen
• vordefinierte Aktionen, z.B. C Objektfile
![Page 12: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/12.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 12
Module 11
• Aktionen abhängig von Zeitstempeln der Dateien
• Beispiel:prog.exe: main.o modul1.o modul2.o gcc -o prog.exe main.o \ modul1.o modul2.o -lm -lc– Programm prog.exe abhängig von Objektfiles main.o,
modul1.o und modul2.o– Aktion: Binden der Objektfiles mit Libs libm und libc
– Automatisches Neucompilieren einer Quelle und Neubinden des Exe bei Änderung einer Quelldatei
![Page 13: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/13.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 13
Module 12
• Beispiel: Makefile für Zinsprogramme
![Page 14: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/14.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 14
Bibliotheken 1
• in der Programmiersprache C sind nur die notwendigsten Grundfunktionalitäten definiert
• es fehlen z.B. Funktionen für Ein-/Ausgabe, Funktionen für Dateihandling, Funktionen für Stringhandling, höhere mathematische Funktionen und vieles andere mehr
• erleichtert die Entwicklung eines C-Compilers• leichtere Anpassung / Übertragung auf
andere Hardware oder Betriebssysteme
![Page 15: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/15.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 15
Bibliotheken 2
• Sehr viele der in der Sprachdefinition nicht enthaltenen Funktionen werden in sog. Funktionsbibliotheken, wie z.B. der C-Standardbibliothek, mitgeliefert
• In der Standardbibliothek sind u.a. enthalten – Ein- und Ausgabefunktionen, Dateihandling,
Stringfunktionen u.v.m. libc– Mathematische Funktionen libm– und viele, viele weitere Funktionen
• Die C-Standardbibliothek ist „genormt“
![Page 16: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/16.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 16
Bibliotheken 3
• Funktionen sind zu funktionalen Gruppen zusammengefasst jeweils eine eigene Headerdatei
• In den Headerdateien sind Prototypen der Funktionen, Typen, Konstanten, Makros usw. definiert oder deklariert
• Beispiele:– Ein- und Ausgabe stdio.h– Stringfunktionen strings.h– Mathematische Funktionen math.h
![Page 17: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/17.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 17
Bibliotheken 4
• Beispiel: stdio.h (Fragment)
![Page 18: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/18.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 18
Bibliotheken 5
• das Handling von Dateien/Files ist ein sehr gutes Beispiel für Modularisierung in C
• die Definition des Typs FILE ist in stdio.h „verborgen“– benötigt wird für Ein-/Ausgabe in C-Programmen
nur der Typ FILE– die Implementierung des Typs FILE ist für die
Verwendung in Programmen unwichtig– sie sollte auf gar keinen Fall in Programmen
verwendet werden, da sie systemabhängig ist!– alle benötigten Konstanten und EA-Funktionen
sind in stdio.h definiert bzw. deklariert
![Page 19: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/19.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 19
Bibliotheken 6
• Bsp: älteres UNIX
typedef struct {int _cnt;unsigned char *_ptr; unsigned char *_base;unsigned char _flag;unsigned char _file;} FILE;
extern FILE _iob[];
• Bsp: devcpp
typedef struct _iobuf{char *_ptr; int _cnt; char *_base; int _flag; int _file;int _charbuf; int _bufsiz; char *_tmpfname;} FILE;
extern FILE *_imp___iob)[];
![Page 20: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/20.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 20
Bibliotheken 7
• FILE abstrakter Datentyp für Datei-EA• Typ FILE muss (!) unabhängig von der
realen Implementierung genutzt werden, da diese systemabhängig (Betriebssystem, Compiler) ist
• Konstanten teilweise auch systemabhängig• Bsp: devcpp _imp___iob
#define _iob (*_imp___iob)#define stdin (&_iob[STDIN_FILENO])#define stdout (&_iob[STDOUT_FILENO])#define stderr (&_iob[STDERR_FILENO]
![Page 21: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/21.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 21
Dateien 1
• Grundlegender Datentyp FILE • zugrundeliegendes Modell: stream• Daten- oder Bytestrom: Bytes werden
sequentiell gepuffert gelesen / geschrieben• Bsp: printf("HALLO, WELT");
![Page 22: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/22.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 22
Dateien 2
• Files Dateien, Pipes, Geräte usw.– Bildschirm / Tastatur stdin, stdout, stderr– Pipes (anonyme Pipes, FIFOs)– Sockets (Netzwerkverbindungen)– Drucker– Tapes, – Festplatte, USB-Stick– usw.
• Effizient für „normale“, sequentielle Files• Uneffizient z.B. für Datenbanken
![Page 23: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/23.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 23
Dateien 3
• FILE *fopen(char *pn, char *mode)• öffnet Datei mit dem Pfadname pn und
verbindet einen stream mit der Datei• liefert einen Zeiger vom Typ FILE * auf den
geöffneten stream• mode gibt den Modus an:
r, rb read - lesen, Datei muss existierenw, wb write - schreiben, Datei wird erzeugt, Dateilänge auf 0 gesetzta, ab append - schreiben, anhängenr+, rb+ update - lesen+schreiben
![Page 24: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/24.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 24
Dateien 4
• fopen() liefert NULL bei Fehler, Bsp: FILE *fp;fp = fopen("datei", "r");if(fp == NULL) { perror("datei"); return(1);}
• void perror(char *msg)– Gibt Systemfehlermeldung auf stderr aus
• int fclose(FILE *fp)– schließt Verbindung zum stream fp
![Page 25: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/25.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 25
Dateien 5
• int fprintf(FILE *fp, char *fmt, /* args */ ...)– formatiertes Schreiben auf stream fp– liefert die Anzahl geschriebener Bytes– printf() fprintf(stdout, ...)
• int fscanf(FILE *fp, char *fmt, /* args */ ...)– formatiertes Lesen von stream fp– liefert Anzahl gelesener Elemente– scanf() fscanf(stdin, ...)
![Page 26: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/26.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 26
Dateien 6
• Zeichen-/Wort-Eingabefunktionen• int fgetc(FILE *fp)• int getc(FILE *fp)
– Zeichen von stream fp lesen
– liefert gelesenes Zeichen, EOF bei Dateiende
• getchar() fgetc(stdin)– oft als Makro implementiert
• int fgetw(FILE *fp)– Wort (Integer) von stream fp lesen
– liefert gelesenen Integerwert, EOF bei Dateiende
![Page 27: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/27.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 27
Dateien 7
• String-Eingabefunktionen• char *fgets(char *s, int n, FILE *fp)– Zeile von fp in Puffer s lesen, maximal n Bytes– liefert NULL bei Dateiende
• char *gets(char *s)– Zeile von stdin in Puffer s einlesen– NULL bei EOF– Achtung: Keine Prüfung der Puffergröße– Sicherer fgets() statt gets() verwenden
![Page 28: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/28.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 28
Dateien 8
• Zeichen-/Wort-Ausgabefunktionen• int fputc(int c, FILE *fp)• int putc(int c, FILE *fp)
– Zeichen c auf stream fp ausgeben
– liefert geschriebenes Zeichen, EOF bei Fehler
• putchar(c) fputc(c, stdout)– oft als Makro implementiert
• int putw(int w, FILE *fp)– Wort w (Integer) auf stream fp ausgeben
– liefert geschriebenes Wort, EOF bei Fehler
![Page 29: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/29.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 29
Dateien 9
• String-Ausgabefunktionen• int fputs(char *s, FILE *fp)
– String s auf stream fp ausgeben, EOF bei Fehler
• int puts(char *s)– String s auf stdout ausgeben, EOF bei Fehler
• Ausgabepuffer leeren• int fflush(FILE *fp)
– schreibt Ausgabepuffer des stream fp– liefert 0 bei Erfolg, -1 bei Fehler
![Page 30: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/30.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 30
Dateien 10
• Beispiel: filecopy.c
![Page 31: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/31.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 31
Dateien 11
• Beispiel: numcat.c
![Page 32: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/32.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 32
Dateien 12
• Beispiel: revcat.c
![Page 33: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/33.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 33
Dateien 13
• binäre Ein- und Ausgabefunktionen• size_t fread(void *p, size_t s, size_t n, FILE *fp)
• size_t fwrite(void *p, size_t s, size_t n, FILE *fp)
• Lesen/Schreiben von n Objekten der Größe s aus/in den Puffer p von/auf den stream fp
• liefert die Anzahl gelesener/geschriebener Objekte n bzw. -1 bei Fehler
![Page 34: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/34.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 34
Dateien 14
• Positionierung in Dateien / streams• int fseek(FILE *fp, long o, int w)
– Setzt den Positionszeiger innerhalb des streams fp auf die neue Position w+o
– o (offset) gibt den Offset zu w an– w (whence) gibt die Ausgangsposition an– SEEK_SET Dateianfang + Offset o– SEEK_CUR aktuelle Position + Offset o– SEEK_END Dateiende + Offset o– liefert 0 bei Erfolg, -1 im Fehlerfall
![Page 35: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/35.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 35
Dateien 15
• long ftell(FILE *fp)– gibt den aktuellen Wert des Positionszeigers
innerhalb der Datei fp aus– liefert aktuelle Position vom Dateianfang an
gesehen, im Fehlerfall -1
• void rewind(FILE *fp)– Positionszeiger der Datei fp auf Dateianfang– rewind(fp) fseek(fp, 0, SEEK_SET)
![Page 36: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/36.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 36
Dateien 16
• Weitere Funktionen• int rename(char *old, char *new)• Umbennenung von Datei old in new • int remove(char *path)• Löschen von Datei path• Funktionen liefern 0 oder bei -1 bei Fehler• int system(char *command)• Ausführen des Strings command• liefert -1 bei Fehler, 0, wenn Kommando ok
![Page 37: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/37.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 37
Dateien 17
• Fehlerbehandlung• int ferror(FILE *fp)
– liefert Wert != 0 bei Fehler in fp, sonst 0
• int feof(FILE *fp)– liefert Wert != 0 bei EOF in fp, sonst 0
• int clearerr(FILE *fp)– Setzt Fehler- und EOF-Indikator in fp zurück
• void perror(char *s)– gibt Systemfehlermeldung auf stderr aus
![Page 38: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/38.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 38
Dateien 18
• low-level Systemcalls• alle bisher bekannten Funktionen für Eingabe
und Ausgabe auf streams / Dateien:• arbeiten aus Effizienzgründen gepuffert• nutzen für die tatsächlichen Eingabe- und
Ausgabeoperationen low-level-Funktionen des Betriebssystems
Systemaufrufe oder Systemcalls– teilweise nach Posix genormt
– Unix / Linux ca. 300, Windows Vista geschätzt 360
![Page 39: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/39.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 39
Dateien 19
• Bsp: Schichten im Betriebsystem
![Page 40: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/40.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 40
Dateien 20
• Low-level IO-Funktionen• int open(char *path, int flag)• int creat(char *path, mode_t mode)• öffnen / erzeugen Datei mit Namen path• liefern Filedescriptor (Integer), -1 bei Fehler• int close(int fd)• Schliessen der Datei mit Filedescriptor fd • ssize_t read(int fd, void *b, size_t n)• ssize_t write(int fd, void *b, size_t n)• Lesen/Schreiben von n Bytes aus Puffer b auf fd
![Page 41: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/41.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 41
Dateien 21
• Standardfiledeskriptoren– 0 Standardeingabe stdin– 1 Standardausgabe stdout– 2 Standardfehlerausgabe stderr
• FILE *fdopen(int fd, char *mode)– verbindet einen stream mit einem Filedeskriptor
• int fileno(FILE *fp)– liefert Filedeskriptor zum stream fp– Filedeskriptor ist Teil des FILE-Datentyps– Zugriff durch Funktion fileno() gekapselt
![Page 42: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/42.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 42
Dateien 22
• Diskussion– Warum Pufferung von IO?– Warum Schichtung Anwendungs-/Systemebene?
![Page 43: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/43.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 43
Dateien 23
• Beispiel: bytecopy1.c
![Page 44: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/44.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 44
Dateien 24
• Beispiel: bytecopy2.c
![Page 45: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/45.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 45
Dateien 25
• Beispiel: bytecopy3.c
![Page 46: Informatik II Grundlagen der Programmierung Programmieren in C Module und Bibliotheken 1](https://reader035.vdocuments.pub/reader035/viewer/2022062805/56814cdb550346895db9decd/html5/thumbnails/46.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 46
Dateien 26
• Diskussion– Welches bytecopy ist schneller und effizienter? – Warum?