---
name: "ne_buffer_append"
section: "3"
platform: "linux"
package: "neon"
version: "0.37.1-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/ne_buffer_append"
---

# ne\_buffer\_append(3)

append data to a string buffer

## NAME

ne\_buffer\_append, ne\_buffer\_zappend, ne\_buffer\_qappend, ne\_buffer\_concat, ne\_buffer\_snprintf - append data to a string buffer

## SYNOPSIS

```
#include <ne_string.h>
```

**void ne\_buffer\_append(ne\_buffer \****buf***, const char \****string***, size\_t** *len***);**

**void ne\_buffer\_zappend(ne\_buffer \****buf***, const char \****string***);**

**void ne\_buffer\_qappend(ne\_buffer \****buf***, const char \****string***, size\_t** *len***);**

**void ne\_buffer\_concat(ne\_buffer \****buf***, ...);**

**size\_t ne\_buffer\_snprintf(ne\_buffer \****buf***, size\_t** *max***, const char \****format***, ...);**

## DESCRIPTION

The **ne\_buffer\_append** and **ne\_buffer\_zappend** functions append a string to the end of a buffer; extending the buffer as necessary. The *len* passed to **ne\_buffer\_append** specifies the length of the string to append; there must be no NUL terminator in the first *len* bytes of the string. **ne\_buffer\_zappend** must be passed a NUL-terminated string.

The **ne\_buffer\_qappend** function behaves similarly to **ne\_buffer\_append**, except that any non-ASCII characters or ASCII control characters are escaped using C-style hex escaping. For example, the C string "foo\<TAB\>bar", where TAB represents ASCII character 9, would be appended as "foo\\x09bar". Any NUL bytes within the length specified are also escaped. This function is useful to make strings from untrusted sources safe for logging or output in a user interface.

The **ne\_buffer\_concat** function takes a variable-length argument list; each argument must be a **char \*** pointer to a NUL-terminated string. A NULL pointer must be given as the last argument to mark the end of the list. The strings are appended to the buffer in the order given. None of the strings passed to **ne\_buffer\_concat** are modified.

The **ne\_buffer\_snprintf** function behaves like **snprintf**, appending the output string formatted according to the *format* parameter. At most *max* bytes are written including the trailing NUL terminator.

## RETURN VALUE

The **ne\_buffer\_snprintf** function returns the number of bytes appended *excluding* the trailing NUL terminator.

## EXAMPLES

The following code will output "Hello, world. And goodbye.".

```
ne_buffer *buf = ne_buffer_create();
ne_buffer_zappend(buf, "Hello");
ne_buffer_concat(buf, ", world. ", "And ", NULL);
ne_buffer_snprintf(buf, 10, "%s.", "goodbye");
puts(buf->data);
ne_buffer_destroy(buf);
```

## SEE ALSO

[**ne\_buffer**(3)](/ne_buffer/3.md), [**ne\_buffer\_create**(3)](/ne_buffer_create/3.md), [**ne\_buffer\_destroy**(3)](/ne_buffer_destroy/3.md)

## COPYRIGHT

Copyright © 2001-2026 Joe Orton\
