4.1.2. 为什么找不到 vsprintf, sprintf, vprintf

这几个函数目前未放置到 libc.a 中,可以用下面的实现:

#include <stdarg.h>

int sprintf(char *out, const char *format, ...)
{
	va_list args;
	va_start(args, format);

	return print(&out, 0, format, args);
}

int vprintf(const char *fmt, va_list va)
{
	return print(0, 0, fmt, va);
}

int vsprintf(char *out, const char *format, va_list va)
{
	return print(&out, 0, format, va);
}

int snprintf(char *out, size_t sz, const char *format, ...)
{
	va_list args;
	va_start(args, format);

	if (sz == 0) {
		return 0;
	}
	
	int ret = print(&out, out + sz - 1, format, args);
	
	return ret;
}