# SDL_asprintf This works exactly like asprintf() but doesn't require access to a C runtime. ## Header File Defined in [<SDL3/SDL_stdinc.h>](https://github.com/libsdl-org/SDL/blob/main/include/SDL3/SDL_stdinc.h) ## Syntax ```c int SDL_asprintf(char **strp, const char *fmt, ...); ``` ## Function Parameters | | | | | ------------ | -------- | ------------------------------------------------------ | | char ** | **strp** | on output, is set to the new string. Must not be NULL. | | const char * | **fmt** | a printf-style format string. Must not be NULL. | | ... | **...** | a list of values to be used with the format string. | ## Return Value (int) Returns the number of bytes in the newly-allocated string, not counting the null-terminator char, or a negative value on error. ## Remarks Functions identically to [SDL_snprintf](SDL_snprintf)(), except it allocates a buffer large enough to hold the output string on behalf of the caller. On success, this function returns the number of bytes (not characters) comprising the output string, not counting the null-terminator character, and sets `*strp` to the newly-allocated string. On error, this function returns a negative number, and the value of `*strp` is undefined. The returned string is owned by the caller, and should be passed to [SDL_free](SDL_free) when no longer needed. ## Thread Safety It is safe to call this function from any thread. ## Version This function is available since SDL 3.2.0. ---- [CategoryAPI](CategoryAPI), [CategoryAPIFunction](CategoryAPIFunction), [CategoryStdinc](CategoryStdinc)