B.18 <stdio.h> 

Die Headerdatei <stdio.h> deklariert eine Menge grundlegender Funktionen, Makros und Typen für die Ein-/Ausgabe. Zunächst ein Überblick über die Funktionen in <stdio.h>:
Syntax | Bedeutung |
FILE *fopen( const char * restrict pfad, const char * restrict modus ); |
Datei öffnen |
FILE *freopen( const char * restrict pfad, const char * restrict modus, FILE * restrict fz ); |
Datei öffnen mit bereits vorhandenem Stream |
int fflush(FILE *fz); |
Inhalt des Datei-Puffers in einen Stream schreiben |
int fclose(FILE *fz); |
Datei schließen |
int remove( const char *pfadname ); |
Datei löschen |
int rename( const char *alt, const char *neu ); |
Datei umbenennen |
FILE *tmpfile(void); |
temporäre Datei erzeugen und automatisch wieder löschen |
char *tmpnam(char *ptr); |
eindeutigen Namen für eine temporäre Datei erzeugen |
void setbuf( FILE * restrict fz, char * restrict puffer ); |
einer Datei einen Puffer zuordnen |
int setvbuf( FILE * restrict fz, char * restrict puffer, int modus, size_t size ); |
einer geöffneten Datei einen Puffer zuordnen |
int fscanf( FILE * restrict fz, const char * restrict format, ... ); |
formatiert aus einem Stream lesen |
int scanf( const char * restrict format, ... ); |
formatiert aus der Standardeingabe (stdin) lesen |
int sscanf( const char * restrict puffer, const char * restrict format, ... ); |
formatiert aus einem String lesen |
int fprintf( FILE * restrict fz, const char * restrict format, ...); |
formatiert in einen Stream schreiben |
int printf( const char * restrict format, ... ); |
formatiert auf die Standardausgabe (stdout) schreiben |
int sprintf( char * restrict puffer, const char * restrict format, ... ); |
formatiert in einen String schreiben |
int vfprintf( FILE * restrict fz, const char * restrict format, va_list arg); |
formatiert in einen Stream schreiben mit Argumentzeiger |
int vprintf( const char * restrict format, va_list arg); |
formatiert auf stdout schreiben mit Argumentzeiger |
int vsprintf( char * restrict puffer, const char * restrict format, va_list arg); |
formatiert in einen String schreiben mit Argumentzeiger |
int getchar(void); |
ein Zeichen von der Standardeingabe (stdin) einlesen |
int putchar(int ch); |
ein Zeichen auf die Standardausgabe (stdout) schreiben |
int fgetc(FILE *fz); int getc (FILE *fz); |
ein Zeichen von einem Stream einlesen |
int fputc(int ch, FILE *fz); int putc(int ch, FILE *fz); |
ein Zeichen in einen Stream schreiben |
int ungetc( int zeichen, FILE *fz); |
ein gelesenes Zeichen in den Stream zurückschieben |
int gets(char *puffer); |
eine ganze Zeile von der Standardeingabe einlesen (Unsichere Funktion. Bessere Alternative: fgets()) |
int puts(const char *puffer); |
eine ganze Zeile auf die Standardausgabe schreiben |
int fgets( char * restrict puffer, int n, FILE * restrict fz); |
eine ganze Zeile aus einem Stream lesen |
int fputs( const char * restrict puffer, FILE * restrict fz); |
eine ganze Zeile in einen Stream schreiben |
size_t fread( void * restrict ptr, size_t size, size_t n_obj, FILE * restrict fz); |
binäres Lesen ganzer Blöcke |
size_t fwrite( const void * restrict p, size_t siz, size_t n_obj, FILE * restrict fz); |
binäres Schreiben ganzer Blöcke |
int fseek( FILE *fz, long int offset, int origin); |
einen Stream positionieren |
long int ftell(FILE *fz); |
die Position eines Streams abfragen |
int fgetpos( FILE *fz, fpos_t * restrict pos); |
die Position eines Streams speichern |
int fsetpos( FILE *fz, const fpos_t *pos); |
einen Stream positionieren (zweite Möglichkeit) |
void rewind(FILE *fz); |
den Stream zum Dateianfang zurücksetzen |
int feof(FILE *fz); |
EOF-Flag überprüfen, ob der Stream am Dateiende ist |
int ferror(FILE *fz); |
Fehler-Flag überprüfen, ob beim Stream ein Fehler auftrat |
void clearerr(FILE *fz); |
das Fehler- und EOF-Flag löschen |
void perror(const char *s); |
Ausgabe einer zu errno gehörigen Fehlermeldung |
Folgende Makros sind in der Headerdatei <stdio.h> meistens als positive Integer-Konstanten definiert:
Makro | Beschreibung |
BUFSIZ |
die Größe des Puffers (in Byte), der von der Funktion setbuf() verwendet wird |
_IOFBF |
Ein-/Ausgabe wird voll gepuffert. Die Konstante wird gewöhnlich von der Funktion setvbuf() verwendet. |
_IOLBF |
Ein-/Ausgabe wird zeilenweise gepuffert. Die Konstante wird gewöhnlich von der Funktion setvbuf() verwendet. |
_IONBF |
Ein-/Ausgabe wird gar nicht gepuffert. Die Konstante wird gewöhnlich von der Funktion setvbuf() verwendet. |
L_tmpnam |
die Größe für ein char-Array, um einen temporären Dateinamen mit der Funktion tmpnam() zu generieren |
SEEK_CUR |
Schreib/Lese-Deskriptor von der aktuellen Position versetzen. Diese Konstante wird von der Funktion fseek() als drittes Argument verwendet. |
SEEK_END |
Schreib/Lese-Deskriptor vom Dateiende um eine bestimmte Anzahl von Bytes versetzen. Diese Konstante wird von der Funktion fseek() als drittes Argument verwendet. |
SEEK_SET |
Schreib/Lese-Deskriptor vom Dateianfang versetzen. Diese Konstante wird von der Funktion fseek() als drittes Argument verwendet. |
FILENAME_MAX |
die Größe für ein char-Array, um den längsten Namen einer Datei zu speichern, der beim Öffnen einer Datei verwendet werden kann |
FOPEN_MAX |
Anzahl der Dateien, die von einem Programm gleichzeitig geöffnet sein dürfen |
TMP_MAX |
Anzahl eindeutiger Dateinamen, die mit der Funktion tmpnam() erzeugt werden können |
EOF |
(End Of File) Diese Konstante wird bei unterschiedlichen Funktionen zurückgegeben, wenn beispielsweise ein Fehler aufgetreten ist oder beim Lesen das Dateiende erreicht wurde. Die Konstante ist als negativer Wert (-1) vom Typ int definiert. |
NULL |
Auch diese Headerdatei definiert den NULL-Zeiger. |
Folgende drei Typen sind in <stdio.h> definiert:
Typ | Beschreibung |
FILE |
Der FILE-Zeiger ist eine Struktur, die alle Informationen für die höheren Datei-Ein-/Ausgabe-Funktionen enthält. Dies beinhaltet u. a. den Puffer (die Anfangsadresse, aktuelle Position, Größe), den File-Deskriptor, die Position des Schreib- oder Lesezeigers, die Fehler- und EOF-Flags. |
fpos_t |
Der Typ wird von der Funktion fgetpos() zurückgegeben und speichert alle Informationen zur aktuellen Dateiposition. Später kann mit dieser Variablen mithilfe der Funktion fsetpos() auf diese Position (zurück-)gesprungen werden. |
size_t |
Ein ganzzahliger unsigned-Typ, der als Ergebnis von sizeof-Operationen verwendet wird. Der Typ ist ebenfalls in mehreren Headerdateien der Standard-Bibliothek definiert. |
Die folgenden drei Standard-Streams sind alle als Zeiger auf FILE im Header <stdio.h> definiert:
Stream | Beschreibung |
stdin |
ein Zeiger auf FILE, der mit der Standard-Eingabe verbunden ist (für gewöhnlich ist das die Tastatur) |
stdout |
ein Zeiger auf FILE, der mit der Standard-Ausgabe verbunden ist (für gewöhnlich ist das der Bildschirm) |
stderr |
ein Zeiger auf FILE, der mit der Standard-Fehlerausgabe verbunden ist (für gewöhnlich ist das der Bildschirm) |
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.