📄 vsnprintf.c
字号:
/*port/vsnprintf.cCopyright (C) 1999 Lars Brinkhoff. See COPYING for terms and conditions.*/#include "config.h"#include <stdio_.h>#include <stdarg.h>#include <stdlib.h>#include <sys/types.h>#ifndef HAVE_VPRINTF#error "Must have vfprintf() and vsprintf()."#endifintvsmprintf (char **s, const char *format, va_list ap){ size_t n; FILE *f; f = fopen ("/dev/null", "w"); if (f == NULL) return -1; n = vfprintf (f, format, ap); fclose (f); *s = malloc (n + 1); if (*s == NULL) return -1; return vsprintf (*s, format, ap);}#ifndef HAVE_VSNPRINTFintvsnprintf (char *str, size_t n, const char *format, va_list ap){ char *s; int m, r; m = vsmprintf (&s, format, ap); if (m == -1) return 0; if (m + 1 > n) { m = n - 1; r = -1; } else { r = m; } memcpy (str, s, m); free (s); str[m] = 0; return r;}intsnprintf (char *s, size_t n, const char *format, ...){ va_list ap; int m; va_start (ap, format); m = vsnprintf (s, n, format, ap); va_end (ap); return m;}#endif /* HAVE_VSNPRINTF */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -