Atari Logo
Atari Computer

Hauptseite -
Welches System? -
Hardware -
Software -
Emulatoren -
Internet
MausNet
Programmieren
Verweise
Über

C

Home Die ANSI Bibliotheken Die ANSI Bibliotheken Formatstring

13.1 stdio.h

Die stdio.h enthält Funktionen für Ein- und Ausgabe. Das sind zum einen Funktionen, die auf einen Datenstrom (stream) arbeiten, der einer Datei oder einem Gerät zugeordnet werden kann. Diese Funktionen haben einen Parameter vom Typ FILE *, der den stream beschreibt. Die Struktur FILE soll von einem Benutzer nicht verändert werden! Ein stream muß vor seiner Verwendung geöffnet (fopen) und nach seiner Verwendung geschlossen (fclose) werden. Die Daten eines streams werden gepuffert, so daß nicht für jedes Byte ein Zugriff auf die Platte nötig ist. Zusätzlich gibt es noch Funktionen, die auf den Standardkanäle für Ein- und Ausgabe arbeiten. Dies sind die streams stdin, stdout und stderr, die schon ab Programmstart offen sind.

void clearerr( FILE *stream );
Diese Funktion löscht intern gespeicherte Informationen über den zuletzt aufgetretenen Fehler bei Verwendung von stream.
 
int fclose( FILE *stream );
Diese Funktion schließt einen Stream. Damit werden auch sämtliche Daten im Puffer geschrieben.
 
int feof( FILE *stream );
Diese Fuktion prüft, ob das Dateiende erreicht ist. Ein Wert ungleich Null bedeutet, daß das Dateiende erreicht ist.
 
int ferror( FILE *stream );
Diese Funktion prüft, ob ein Fehler bei der Benutzung von stream aufgetreten ist. Ein Wert ungleich Null bedeutet, daß ein Fehler aufgetreten ist.
 
int fflush( FILE *stream );
Diese Funktion schreibt die noch im Puffer befindlichen Daten in den stream.
 
int fgetc( FILE *stream );
Diese Funktion liest ein Zeichen (unsigned char) aus dem Stream. Wenn kein Zeichen zur Verfügung steht, wird EOG geliefert.
 
int getc( FILE *stream );
Diese Funktion ist äquivalent zu fgetc, kann aber als Makro definiert sein.
 
int getchar( void );
Diese Funktion ist äquivalent zu getc(stdin).
 
int fgetpos( FILE *stream, fpos_t *pos );
Diese Funktion speichert die momentane Position innerhalb der Datei in die Variable pos, um sie z.B. mittels fsetpos später wieder anzuspringen.
 
char *fgets( char *str, int n, FILE *stream );
Diese Funktion liest eine Zeile in die Variable str. Der Parameter n gibt an, wieviel Zeichen inklusive der abschließenden Null str aufnehmen kann.
 
FILE *fopen( const char *filename, const char *mode );
Diese Funktion öffnet eine Datei und ordnet sie einem stream zu. Da unter UNIX und MiNT die Geräte bzw. Schnittstellen eine Repräsentation im Dateisystem haben, lassen sich hier auch streams für Schnittstellen öffnen. Unter MiNT sind dies die Dateien im Verzeichnis u:\dev. Wenn die Datei nicht existiert, wird NULL zurückgegeben. Der Parameter mode gibt den Zugriffsmodus an:
 
"w"
Die Datei wird zum Schreiben geöffnet. Wenn die Datei nicht existiert, wird sie angelegt. Existiert die Datei, wird sie gelöscht.
 
"r"
Die Datei wird zum Lesen geöffnet. Die Datei muß existieren.
 
"w+"
Die Datei wird zum Schreiben und Schreiben geöffnet. Wenn die Datei nicht existiert, wird sie angelegt. Existiert die Datei, wird sie gelöscht. Wird zwischen Lesen und Schreiben gewechselt, muß entweder fflush aufgerufen werden oder der Dateizeiger mittels fseek neu positioniert werden.
 
"r+"
Die Datei wird Lesen und zum Schreiben geöffnet. Die Datei muß existieren. Wird zwischen Lesen und Schreiben gewechselt, muß entweder fflush aufgerufen werden oder der Dateizeiger mittels fseek neu positioniert werden.
 
"a"
Die Datei wird zum Anhängen geöffnet. Die Datei muß existieren.
 

Enthält der Mode nach dem ersten Zeichen noch ein b, z.B. "rb" oder "w+b", wird die Datei im Binärmodus geöffnet. Ein Öffnen im Textmodus bedeutet uaf Ataris oder PCs auch, daß ein Linefeed '\n' im Stream zu einem CR LF in der Datei gewandelt wird. Beim Einlesen wird entsprechend ein Return gefolgt von einem Linefeed zu einem Linefeed. Damit wird in der Datei oder bei der Bildschirmausgabe das Zeilenende benutzt, daß das System benutzt. In der Zeichenkette im C Programm wird immer '\n' als Zeilenende benutzt.
 
int fprintf( FILE *stream, const char *format, ... );
Diese Funktion schreibt beliebige Paramter anhand der Informationen, die der Formatstring format vorgibt. Nach dem Formatstring folgen die Variablen oder Konstanten, die ausgegeben werden sollen.
 
int fputc( int ch, FILE *stream );
Diese Funktion schreibt ein Zeichen (unsigned char).
 
int putc( int ch, FILE *stream );
Diese Funktion ist äquivalent zu fputc, kann aber als Makro definiert sein.
 
int putchar( int c );
Diese Funktion ist äquivalent zu putc( c, stdout);
 
int fputs( const char *str, FILE *stream );
Diese Funktion schreibt eine Zeichenkette.
 
size_t fread( void *buf, size_t elem_Siz, size_t count, FILE *stream );
Diese Funktion liest count Elemente der Größe elem_Siz in den Puffer buf ein. Die Funktion gibt die Anzahl der gelesenen Elemente zurück.
 
FILE *freopen( const char *filename, const char *mode, FILE *stream );
Diese Funktion öffnet eine Datei und ordnet sie einem vorhandenen Stream zu. Damit lassen sich z.B. die Dateien ändern, die stdin, stdout und stderr zugeordnet sind.
 
int fscanf( FILE *stream, const char *format, ... );
Diese Funktion liest Daten ein, das Formt der Daten wird durch den Formatstring format vorgegeben. Anschließend folgen die Adressen der Variablen, in die eingelesen werden soll.
 
int fseek( FILE *stream, long offset, int mode );
Diese Funktion legt fest, ab welcher Position in der Datei weitere Ein- und Ausgaben erfolgen. Es wir also der Dateizeiger neu positioniert. Der Parameter mode gibt an, bezüglich welcher Stelle in der Datei neu positioniert werden soll:
 
SEEK_SET
Positioniert relativ zum Dateianfang.
 
SEEK_CUR
Positioniert relativ zur aktuellen Position.
 
SEEK_END
Positioniert relativ zum Dateiende.
 
void rewind( FILE *stream);
Diese Funktion ist äquivalent zu fseek(strem,0,SEEK_SET); clearerr(stream);
 
int fsetpos( FILE *stream, const fpos_t *pos );
Diese Funktion setzt den Dateizeiger wieder an die stelle, die mittels fgetpos gespeichert wurde.
 
long ftell( FILE *stream );
Diese Funktion liefert die Position innerhalb der Datei.
 
size_t fwrite( const void *buf, size_t elem_Siz, size_t count, FILE *stream );
Diese Funktion schreibt count Elemente der Größe elem_Siz aus dem Puffer buf. Die Funktion gibt die Anzahl der gelschriebenen Elemente zurück.
 
char *gets( char *str );
Diese Funktion liest die nächste Zeile von der Standardeingabe ein.
 
void perror( char *s );
Diese Funktion gibt zuerst s und dann eine Fehlermeldung passend zu dem aktuellen Wert der Variable errno aus. Der Text ist von der Implementierung abhängig.
 
int printf( const char *format, ... );
Diese Funktion verhält sich wie fprintf, gibt aber auf die Standardausgabe aus.
 
int puts( const char *str );
Diese Funktion schreibt eine Zeichenkette auf die Standardausgabe.
 
int scanf( const char *format, ... );
Diese Funktion verhält sich wie fscanf, liest aber von der Standardeingabe.
 
void setbuf( FILE *stream, char *buf );
Wird für buf der Wert NULL übergeben, wird für den Stream die Pufferung ausgeschaltet. Für einen Wert ungleich NULL ist die Funktion äquivalent zu setvbuf(stream, buf, _IOFBF, BUFSIZ);
 
int setvbuf( FILE *stream, char *buf, int type, size_t size );
Diese Funktion legt die Pufferung fest und muß vor allen anderen Operationen auf diesen Stream aufgerufen werden. Hat buf den Wert NULL, wird ein eigener Puffer anglegt, ansosnten wird buf verwendet. Der Wert size gubt die Puffergröße an. Der Wert type gibt die Art der Pufferung an:
 
_IOFBF
Die Datei wird vollständig gepuffert.
 
_IOLBF
Die Textdatei wird zeilenweise gepuffert.
 
_IONBF
Die Datei wird nicht gepuffert.
 
int sprintf( char *string, const char *format, ... );
Diese Funktion verhält sich wie fprintf, gibt aber in eine Zeichenkette aus.
 
int sscanf( char *string, const char *format, ... );
Diese Funktion verhält sich wie fscanf, liest aber aus einer Zeichenkette.
 
char *tmpnam( char *s );
Wird NULL übergeben, erzeugt diese Funktion einen Namen, der als Dateiname für eine temporäre Datei verwendet werden kann. Es ist sichergestellt, daß noch keine Datei mit diesen Namen existiert. Wird eine Name, der mindestens L_tmpnam Zeichen enthält, übergeben, wird dieser gespeichert und als Ergebnis geliefert.
 
FILE *tmpfile( void );
Diese Funktion erzeugt eine temporäre Datei, die mit dem Mode "wb+" geöffnet wurde. Konnte keine Datei geöffnet werden, ist das Ergebnis NULL.
 
int ungetc( int ch, FILE *stream );
Diese Funktion stellt ein gelesenes Zeichen wieder in den Stream zurück. Ein erneutes Lesen mittels fgetc( stream) würde wieder dieses Zeichen lesen.
 
int vfprintf( FILE *stream, const char *format, va_list param );
Diese Funktion ist äquivalent zu fprintf, benutzt aber keine variable Parameterliste. Der Parameter ist ein Wert, der durch va_start und vielleicht va_arg initialisiert werden kann. Damit kann eine variable Parameterliste an vfprintf weitergereicht werden.
 
int vprintf( const char *format, va_list param );
Diese Funktion ist äquivalent zu printf, benutzt aber keine variable Parameterliste. Der Parameter ist ein Wert, der durch va_start und vielleicht va_arg initialisiert werden kann. Damit kann eine variable Parameterliste an vprintf weitergereicht werden.
 
int vsprintf( char *string, const char *format, va_list param );
Diese Funktion ist äquivalent zu sprintf, benutzt aber keine variable Parameterliste. Der Parameter ist ein Wert, der durch va_start und vielleicht va_arg initialisiert werden kann. Damit kann eine variable Parameterliste an vsprintf weitergereicht werden.
 
int vfscanf( FILE *stream, const char *format, va_list param );
Diese Funktion ist äquivalent zu fscanf, benutzt aber keine variable Parameterliste. Der Parameter ist ein Wert, der durch va_start und vielleicht va_arg initialisiert werden kann. Damit kann eine variable Parameterliste an vfscanf weitergereicht werden.
 
int vscanf( const char *format, va_list param );
Diese Funktion ist äquivalent zu scanf, benutzt aber keine variable Parameterliste. Der Parameter ist ein Wert, der durch va_start und vielleicht va_arg initialisiert werden kann. Damit kann eine variable Parameterliste an vscanf weitergereicht werden.
 
int vsscanf( char *string, const char *format, va_list param );
Diese Funktion ist äquivalent zu sscanf, benutzt aber keine variable Parameterliste. Der Parameter ist ein Wert, der durch va_start und vielleicht va_arg initialisiert werden kann. Damit kann eine variable Parameterliste an vsscanf weitergereicht werden.
 
int fileno( FILE *stream );
Diese Funktion liefert das Handle der Funktion, also unter TOS das GEMDOS Dateihandle. Achtung: diese Funktion darf nicht dazu benutzt werden, unterschiedliche Schichten (Stream, GEMDOS) zu mischen! Dies würde zu Fehlern führen!
 


Home Die ANSI Bibliotheken Die ANSI Bibliotheken Formatstring


Best viewed with any browser English version not yet available.

Änderungen und Irrtümer vorbehalten. Letzte Änderung:
14 September 2001.
Home - Mail an den Webmaster - Impressum