Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

malloc(3C)

fopen(3S)

getc(3S)

putc(3S)

stdio(3S)

stdio(5)

setbuf(3S)                                                       setbuf(3S)

NAME
     setbuf, setvbuf - Pufferung für Stream festlegen

SYNTAX
     #include <stdio.h>

     void setbuf(FILE *stream, char *buf);

     int setvbuf(FILE *stream, char *buf, int type, sizet size);

BESCHREIBUNG
     setbuf() kann verwendet werden, nachdem eine Stream-Datei eröffnet
     wurde, aber bevor sie gelesen bzw. geschrieben wird. Es bewirkt, daß
     das Feld, auf das buf zeigt, anstelle eines automatisch zugewiesenen
     Puffers verwendet wird. Wenn buf der Nullzeiger ist, sind Eingabe und
     Ausgabe völlig ungepuffert.

     Die Puffergröße ist nicht begrenzt; die Konstante BUFSIZ, die in der
     Include-Datei stdio.h definiert ist, bezeichnet jedoch eine geeignete
     Puffergröße:

          char buf[BUFSIZ];

     setvbuf() kann verwendet werden, nachdem eine gepufferte Datei eröff-
     net wurde, aber bevor sie gelesen bzw. geschrieben wird. type
     bestimmt, wie stream gepuffert wird. Die zulässigen Werte für type (in
     stdio.h definiert) haben folgende Bedeutung:

     IOFBF    vollständige Pufferung der Ein-/Ausgabe

     IOLBF    Zeilenpufferung der Ausgabe; der Puffer wird entleert, wenn
               das Neue-Zeile-Zeichen geschrieben wird, der Puffer voll ist
               oder eine Eingabe angefordert wird

     IONBF    keine Ein-/Ausgabe-Pufferung

     Wenn buf nicht der Nullzeiger ist, wird das Feld, auf das gezeigt
     wird, anstelle des automatisch zugewiesenen Puffers verwendet. size
     gibt die Größe des zu verwendenden Puffers vor. Ist die Ein-/Ausgabe
     nicht gepuffert, werden buf und size ignoriert.

ERGEBNIS
     Wird ein unzulässiger Wert für type verwendet, dann gibt setvbuf()
     einen Wert ungleich null zurück. Andernfalls wird null zurückgegeben.

HINWEISE
     Eine häufige Fehlerquelle besteht darin, daß als Puffer in einem Pro-
     grammblock eine Variable der Speicherklasse auto verwendet und die
     Datei in diesem Block dann nicht geschlossen wird.






Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

setbuf(3S)                                                       setbuf(3S)

     Teile von buf werden für interne Verwaltungsinformationen des Streams
     benötigt, deswegen enthält buf weniger als size Bytes wenn er voll
     ist. Sie sollten bei der Verwendung von setvbuf() automatisch zugewie-
     sene Puffer verwenden.

SIEHE AUCH
     malloc(3C), fopen(3S), getc(3S), putc(3S), stdio(3S), stdio(5).















































Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026