---
name: "buffer"
section: "3diet"
platform: "linux"
package: "libowfat-dev"
version: "0.28-2"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/buffer/3diet"
---

# buffer(3diet)

generic read/write buffering

## NAME

buffer.h - generic read/write buffering

## SYNTAX

**#include \<buffer.h\>**

  buffer\* buffer\_0;   /\* like stdio's stdin \*/\
   buffer\* buffer\_1;   /\* like stdio's stdout \*/\
   buffer\* buffer\_2;   /\* like stdio's stderr \*/

## DESCRIPTION

buffer.h provides a generic buffer interface that can be used for read and write buffering.  Buffers must be initialized with **buffer\_init**.

A buffer can only be used for reading or writing at the same time, not both.

Unlike stdio, these write buffers are not flushed automatically at program termination; you must manually call **buffer\_flush**, **buffer\_putsflush**, **buffer\_putflush** or **buffer\_putnlflush**.

## EXAMPLE

See [buffer\_init(3)](/buffer_init/3.md) for example read buffer code.  Here is typical code for printing an error message on stderr:

  \#include \<buffer.h\>

  buffer\_puts(buffer\_2,"error: got only ");\
   buffer\_putulong(buffer\_2,got);\
   buffer\_puts(buffer\_2," bytes, but expected at least ");\
   buffer\_putulong(buffer\_2,expected);\
   buffer\_putsflush(buffer\_2," bytes!");

## SEE ALSO

[buffer\_init(3)](/buffer_init/3.md), [buffer\_put(3)](/buffer_put/3.md), [buffer\_get(3)](/buffer_get/3.md), [buffer\_flush(3)](/buffer_flush/3.md)
