snprintf(3) Library Functions Manual snprintf(3) snprintf, vsnprintf - (libc -lc) #include int snprintf(size_t size; char str[restrict size], size_t size, const char *restrict format, ...); int vsnprintf(size_t size; char str[restrict size], size_t size, const char *restrict format, va_list ap); glibc ( feature_test_macros(7)): snprintf(), vsnprintf(): _XOPEN_SOURCE >= 500 || _ISOC99_SOURCE || /* glibc <= 2.19: */ _BSD_SOURCE printf(3) str . snprintf() vsnprintf() size ( ('\0')) str. vsnprintf() snprintf() va_list . va_end. va_arg ap . stdarg(3). C99 POSIX.1-2001 snprintf() vsnprintf() ( ). . printf(3). ( ). snprintf() vsnprintf() size ( ('\0')). ( ) . size . ( CAVEATS.) errno . printf(3). attributes(7). +----------------------+------------------------------------+---------------------------------------------------------------------------------------------+ | | | | +----------------------+------------------------------------+---------------------------------------------------------------------------------------------+ |snprintf() | | (locale) (MT-Safe) | |vsnprintf() | | | +----------------------+------------------------------------+---------------------------------------------------------------------------------------------+ C11, POSIX.1-2008. SUSv2, C99, POSIX.1-2001. SUSv2 C99 : snprintf() size=0 SUSv2 1 C99 str (NULL) ( ) . POSIX.1-2001 snprintf() C99. snprintf(buf, countof(buf), "%s some further text", buf); buf. snprintf() vsnprintf(). gcc(1) . glibc snprintf() vsnprintf() C99 glibc 2.1. glibc 2.0.6 -1 . printf(3). ( glibc 2.0 glibc 2.1): #include #include #include char * make_message(const char *fmt, ...) { int n = 0; size_t size = 0; char *p = NULL; va_list ap; /* . */ va_start(ap, fmt); n = vsnprintf(p, size, fmt, ap); va_end(ap); if (n < 0) return NULL; size = (size_t) n + 1; /* '\0' */ p = malloc(size); if (p == NULL) return NULL; va_start(ap, fmt); n = vsnprintf(p, size, fmt, ap); va_end(ap); if (n < 0) { free(p); return NULL; } return p; } glibc 2.0.6 . printf(1), asprintf(3), printf(3), puts(3), scanf(3), setlocale(3), strfromd(3), wcrtomb(3), wprintf(3), locale(5) 3 . . : . 6.18 7 2025 snprintf(3)