Ein- und Ausgabe-Funktionen
stdio.h
Diese Bibliothek enthält alle Funktionen, die für die Ein- und Ausgabe zuständig sind. Fast alle bedienen sich dabei sogenannter Streams. Streams sind allgemein definiert als ein aktiviertes lineares Interface zwischen Programm und Hardware. Häufigste Anwendung ist dabei eine Datei, weshalb der Typ auch FILE* heisst. Die folgenden Funktionen sind unter anderem speziell für Dateien gemacht:
void clearer(FILE* stream) | Flags zurücksetzen |
int fclose(FILE* stream) | Stream schliessen |
int feof(FILE* stream) | gibt 0 zurück, wenn Dateiende noch nicht erreicht |
int ferror(FILE* stream) | gibt 0 zurück, wenn alles in Ordnung ist |
int fflush(FILE* stream) | Puffer leeren |
int fgetc(FILE* stream) | ein Zeichen lesen |
int fgetpos(FILE* stream, fpos_t* pos) | pos enthält die Position im Stream |
char* fgets(char* str, int i, FILE* stream) | Liest String bis \n aber maximal i-1 Zeichen |
FILE* fopen(const char* Name, const char* modus) | Öffnet einen Stream im angegebenen Modus |
int fprintf(FILE* stream, const char* format, ...) | In einen Stream werden formtierte Daten ausgegeben |
int fputc(int zeichen, FILE* stream) | Ein Zeichen schreiben |
int fputs(const char* str, FILE* stream) | String schreiben |
size_t fread(void* Puffer, size_t Grösse, size_t Anz, FILE* stream) | liest maximal 64 KB in den Puffer |
FILE* freopen(const char* Name, const char* modus, FILE* stream) | ordnet Stream einer anderen Datei zu |
int fscanf(FILE* stream, const char* format, ...) | liest formatierte Daten ein |
int fsetpos(FILE* stream, const fpos_t* pos) | Setzt den Dateipointer auf eine absolute Position |
long ftell(FILE* stream) | gibt den Positionspointer zurück |
size_t fwrite(const void* Puffer, size_t Grösse, size_t Anz, FILE* stream) | schreibt maximal 64 KB in den Puffer |
int remove(const char* Datei) | Datei wird gelöscht |
int rename(const char* Datei1, const char* Datei2) | Umbenennen der Datei |
void rewind(FILE* stream) | Zurücksetzen der Flags und zurück zum Dateianfang |
FILE* tmpfile(void) | Temporäre Datei erstellen |
char* tmpnam(char* str) | Benannte temporäre Datei erstellen |
Die folgenden Funktionen sind speziell für die Eingabe über Tastatur (stdin) und die Ausgabe über Bildschirm (stdout) gedacht:
int getc(FILE* stream) | liest ein Zeichen |
int getchar(void) | liest ein Zeichen aus stdin |
char* gets(char* str) | liest eine Zeichenkette aus stdin |
int putc(int asc, FILE* stream) | gibt ein Zeichen aus |
int putchar(int asc) | gibt ein Zeichen auf stdout aus |
int puts(const char* str) | gibt den String auf stdout aus |
int scanf(const char* str, ...) | Liest einen formatierten String von stdin |
Die folgenden Funktionen sind zuständig für allgemeine Puffer- und Stream-Anweisungen, sie werden normalerweise erst bei manueller Dateiansteuerung benutzt.
void setbuf(FILE* stream, char* Puffer) | Weist dem stream einen Puffer zu |
int setvbuf(FILE* stream, char* modus, int, size_t Grösse) | Weist dem stream die Art des Puffers zu |
int sscanf(const char* Puffer, const char* str, ...) | formatiertes Herauslesen aus dem Puffer |
int ungetc(int asc, FILE* stream) | Fehlerhalber gelesenes Zeichen wird wieder zurückgeschrieben zu |
Vordefinierte Konstanten
Viele Funktionen der Standardbibliotheken bieten eine Fülle an Optionen an. Dafür müssen jedoch jeweils die korrekten Werte übergeben werden. Hier sind die wichtigsten aufgelistet:
fopen:
a Daten anhängen. Falls Datei nicht existiert, wird neue Datei erstellt. a+ Gleich wie a, aber mit Lesezugriff r Nur Lesen. Fehler, wenn Datei nicht geöffnet werden kann. r+ Gleich wie r, nur mit Schreibzugriff w Nur Schreiben. Wenn Datei bereits existent, wird sie überschrieben!! w+ Gleich wie w, nur mit Lesezugriff.
fseek:
SEEK_CUR aktuelle Position SEEK_END Dateiende SEEK_SET Dateianfang
setbuf:
BUFSIZ 512 Normale Puffergrösse
setvbuf:
_IOFBF volle Pufferung bis Zwischenspeicher voll _IOLBF zwilenweise Pufferung _IONBF keine Pufferung