---
name: "aprintf"
section: "3"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://carta.tech/man/aprintf"
---

# aprintf(3)

allocate and print formatted string

## NAME

aprintf, vaprintf - allocate and print formatted string

## LIBRARY

gnulib - The GNU Portability Library

## SYNOPSIS

```
#include <stdio.h>
```

**char \*aprintf(const char \*restrict** *fmt***, ...);** **char \*vaprintf(const char \*restrict** *fmt***, va\_list** *ap***);**

## DESCRIPTION

The functions **aprintf**() and **vaprintf**() are analogs of [**sprintf**(3)](/man/sprintf/3.md) and [**vsprintf**(3)](/man/vsprintf/3.md), except that their output is written in a space allocated as if by a call to [**malloc**(3)](/man/malloc/3.md).

This pointer should be passed to [**free**(3)](/man/free/3.md) to release the allocated storage when it is no longer needed.

## RETURN VALUE

On success, these functions return a pointer to the first character of the formatted string. On error, -1 is returned, and *errno* is set to indicate the error.

## ERRORS

See [**sprintf**(3)](/man/sprintf/3.md) and [**malloc**(3)](/man/malloc/3.md).

## ATTRIBUTES

For an explanation of the terms used in this section, see [**attributes**(7)](/man/attributes/7.md).

| | | |
| --- | --- | --- |
| **Interface** | **Attribute** | **Value** |
| **aprintf**(), **vaprintf**() | Thread safety | MT-Safe locale |

## STANDARDS

None.

## HISTORY

gnulib 202607.

## SEE ALSO

[**free**(3)](/man/free/3.md), [**malloc**(3)](/man/malloc/3.md), [**sprintf**(3)](/man/sprintf/3.md), [**strdup**(3)](/man/strdup/3.md), [**asprintf**(3)](/man/asprintf/3.md)
