snprintf.c

来自「在x86平台上运行不可信任代码的sandbox。」· C语言 代码 · 共 52 行

C
52
字号
#include <stdio.h>#include <errno.h>#include "ioprivate.h"struct snprintbuf {	char *buf;	char *ebuf;};static intsprintputch(int ch, struct snprintbuf *b){	if (b->buf < b->ebuf)		*b->buf++ = ch;	return 0;}intvsnprintf(char *buf, int n, const char *fmt, va_list ap){	struct snprintbuf b = {buf, buf+n-1};	if (buf == NULL || n < 1) {		errno = EINVAL;		return -1;	}	// print the string to the buffer	int cnt = vprintfmt((void*)sprintputch, &b, fmt, ap);	// null terminate the buffer	*b.buf = '\0';	return cnt;}intsnprintf(char *buf, int n, const char *fmt, ...){	va_list ap;	int rc;	va_start(ap, fmt);	rc = vsnprintf(buf, n, fmt, ap);	va_end(ap);	return rc;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?