[ << ] | [ >> ] |  |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

# 6. Output with Unicode strings `<unistdio.h>`

This include file declares functions for doing formatted output with Unicode strings. It defines a set of functions similar to `fprintf` and `sprintf`, which are declared in `<stdio.h>`.

These functions work like the `printf` function family. In the format string:

- The format directive ‘`U`’ takes an UTF-8 string (`const uint8_t *`).
- The format directive ‘`lU`’ takes an UTF-16 string (`const uint16_t *`).
- The format directive ‘`llU`’ takes an UTF-32 string (`const uint32_t *`).
- The format directive ‘`n`’ is not supported, for security reasons.

A function name with an infix ‘`v`’ indicates that a `va_list` is passed instead of multiple arguments.

The functions `*sprintf` have a buf argument that is assumed to be large enough. (DANGEROUS! Overflowing the buffer will crash the program.)

The functions `*snprintf` have a buf argument that is assumed to be size units large. (DANGEROUS! The resulting string might be truncated in the middle of a multibyte character.)

The functions `*asprintf` have a resultp argument. The result will be freshly allocated and stored in `*resultp`.

The functions `*asnprintf` have a (resultbuf, lengthp) argument pair. If resultbuf is not NULL and the result fits into `*lengthp` units, it is put in resultbuf, and resultbuf is returned. Otherwise, a freshly allocated string is returned. In both cases, `*lengthp` is set to the length (number of units) of the returned string. In case of error, NULL is returned and `errno` is set.

The following functions take an ASCII format string and return a result that is a `char *` string in locale encoding.

Function: int ulc_sprintf (char *buf, const char *format, ...)

Function: int ulc_snprintf (char *buf, size_t size, const char *format, ...)

Function: int ulc_asprintf (char **resultp, const char *format, ...)

Function: char * ulc_asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...)

Function: int ulc_vsprintf (char *buf, const char *format, va_list ap)

Function: int ulc_vsnprintf (char *buf, size_t size, const char *format, va_list ap)

Function: int ulc_vasprintf (char **resultp, const char *format, va_list ap)

Function: char * ulc_vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list ap)

The following functions take an ASCII format string and return a result in UTF-8 format.

Function: int u8_sprintf (uint8_t *buf, const char *format, ...)

Function: int u8_snprintf (uint8_t *buf, size_t size, const char *format, ...)

Function: int u8_asprintf (uint8_t **resultp, const char *format, ...)

Function: uint8_t * u8_asnprintf (uint8_t *resultbuf, size_t *lengthp, const char *format, ...)

Function: int u8_vsprintf (uint8_t *buf, const char *format, va_list ap)

Function: int u8_vsnprintf (uint8_t *buf, size_t size, const char *format, va_list ap)

Function: int u8_vasprintf (uint8_t **resultp, const char *format, va_list ap)

Function: uint8_t * u8_vasnprintf (uint8_t *resultbuf, size_t *lengthp, const char *format, va_list ap)

The following functions take an UTF-8 format string and return a result in UTF-8 format.

Function: int u8_u8_sprintf (uint8_t *buf, const uint8_t *format, ...)

Function: int u8_u8_snprintf (uint8_t *buf, size_t size, const uint8_t *format, ...)

Function: int u8_u8_asprintf (uint8_t **resultp, const uint8_t *format, ...)

Function: uint8_t * u8_u8_asnprintf (uint8_t *resultbuf, size_t *lengthp, const uint8_t *format, ...)

Function: int u8_u8_vsprintf (uint8_t *buf, const uint8_t *format, va_list ap)

Function: int u8_u8_vsnprintf (uint8_t *buf, size_t size, const uint8_t *format, va_list ap)

Function: int u8_u8_vasprintf (uint8_t **resultp, const uint8_t *format, va_list ap)

Function: uint8_t * u8_u8_vasnprintf (uint8_t *resultbuf, size_t *lengthp, const uint8_t *format, va_list ap)

The following functions take an ASCII format string and return a result in UTF-16 format.

Function: int u16_sprintf (uint16_t *buf, const char *format, ...)

Function: int u16_snprintf (uint16_t *buf, size_t size, const char *format, ...)

Function: int u16_asprintf (uint16_t **resultp, const char *format, ...)

Function: uint16_t * u16_asnprintf (uint16_t *resultbuf, size_t *lengthp, const char *format, ...)

Function: int u16_vsprintf (uint16_t *buf, const char *format, va_list ap)

Function: int u16_vsnprintf (uint16_t *buf, size_t size, const char *format, va_list ap)

Function: int u16_vasprintf (uint16_t **resultp, const char *format, va_list ap)

Function: uint16_t * u16_vasnprintf (uint16_t *resultbuf, size_t *lengthp, const char *format, va_list ap)

The following functions take an UTF-16 format string and return a result in UTF-16 format.

Function: int u16_u16_sprintf (uint16_t *buf, const uint16_t *format, ...)

Function: int u16_u16_snprintf (uint16_t *buf, size_t size, const uint16_t *format, ...)

Function: int u16_u16_asprintf (uint16_t **resultp, const uint16_t *format, ...)

Function: uint16_t * u16_u16_asnprintf (uint16_t *resultbuf, size_t *lengthp, const uint16_t *format, ...)

Function: int u16_u16_vsprintf (uint16_t *buf, const uint16_t *format, va_list ap)

Function: int u16_u16_vsnprintf (uint16_t *buf, size_t size, const uint16_t *format, va_list ap)

Function: int u16_u16_vasprintf (uint16_t **resultp, const uint16_t *format, va_list ap)

Function: uint16_t * u16_u16_vasnprintf (uint16_t *resultbuf, size_t *lengthp, const uint16_t *format, va_list ap)

The following functions take an ASCII format string and return a result in UTF-32 format.

Function: int u32_sprintf (uint32_t *buf, const char *format, ...)

Function: int u32_snprintf (uint32_t *buf, size_t size, const char *format, ...)

Function: int u32_asprintf (uint32_t **resultp, const char *format, ...)

Function: uint32_t * u32_asnprintf (uint32_t *resultbuf, size_t *lengthp, const char *format, ...)

Function: int u32_vsprintf (uint32_t *buf, const char *format, va_list ap)

Function: int u32_vsnprintf (uint32_t *buf, size_t size, const char *format, va_list ap)

Function: int u32_vasprintf (uint32_t **resultp, const char *format, va_list ap)

Function: uint32_t * u32_vasnprintf (uint32_t *resultbuf, size_t *lengthp, const char *format, va_list ap)

The following functions take an UTF-32 format string and return a result in UTF-32 format.

Function: int u32_u32_sprintf (uint32_t *buf, const uint32_t *format, ...)

Function: int u32_u32_snprintf (uint32_t *buf, size_t size, const uint32_t *format, ...)

Function: int u32_u32_asprintf (uint32_t **resultp, const uint32_t *format, ...)

Function: uint32_t * u32_u32_asnprintf (uint32_t *resultbuf, size_t *lengthp, const uint32_t *format, ...)

Function: int u32_u32_vsprintf (uint32_t *buf, const uint32_t *format, va_list ap)

Function: int u32_u32_vsnprintf (uint32_t *buf, size_t size, const uint32_t *format, va_list ap)

Function: int u32_u32_vasprintf (uint32_t **resultp, const uint32_t *format, va_list ap)

Function: uint32_t * u32_u32_vasnprintf (uint32_t *resultbuf, size_t *lengthp, const uint32_t *format, va_list ap)

The following functions take an ASCII format string and produce output in locale encoding to a `FILE` stream.

Function: int ulc_fprintf (FILE *stream, const char *format, ...)

Function: int ulc_vfprintf (FILE *stream, const char *format, va_list ap)

[ << ] | [ >> ] |  |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

This document was generated by Bruno Haible on February, 23 2026 using texi2html 1.78a.