Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

setbuf - Puffer einem Datenstrom zuweisen

&pagelevel(4)&pagelevel

Definition

#include <stdio.h>

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

Beschreibung

setbuf() kann verwendet werden, nachdem der Datenstrom, auf den stream zeigt, einer offenen Datei zugeordnet wurde, aber bevor eine andere Operation auf dem Datenstrom ausgeführt wird. setbuf() bewirkt, dass das Feld, auf das buf zeigt, an Stelle eines automatisch zugewiesenen Puffers verwendet wird.

Die Puffergröße ist nicht begrenzt; die Konstante BUFSIZ (siehe stdio.h) bezeichnet jedoch eine geeignete Puffergröße:

char buf [BUFSIZ];

Wenn buf kein Nullzeiger ist, sind folgende Funktionsaufrufe äquivalent:

setbuf( stream , buf )
setvbuf( stream , buf , _IOFBF, BUFSIZ)

Wenn buf ein Nullzeiger ist, sind Eingabe und Ausgabe ungepuffert und folgende Funktionsaufrufe äquivalent:

setbuf( stream , buf )
setvbuf( stream , buf , _IONBF, BUFSIZ)

BS2000
Wenn buf ein Nullzeiger ist, wird der vom System zugewiesene Puffer verwendet. (Ende)

Im Unterschied zu setvbuf() hat setbuf() keinen Returnwert.

Hinweis

Eine häufige Fehlerquelle besteht darin, dass als Puffer in einem Programmblock eine Variable der Speicherklasse auto verwendet und die Datei in diesem Block dann nicht geschlossen wird.

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 zugewiesene Puffer verwenden.

setbuf() wird für die Datei ausgeführt, die stream zugeordnet ist. Dies kann eine POSIX- oder BS2000-Datei sein.

BS2000
Wird der Blockungsfaktor mit dem BUFFER-LENGTH-Parameter des ADD-FILE-LINK-Kommandos explizit vereinbart, muss die Größe des Bereichs dieser vereinbarten Blockungsgröße entsprechen. (Ende)

Siehe auch

fopen(), setvbuf(), stdio.h, Abschnitt "Datenströme“.