sfprintf.c

来自「su 的源代码库」· C语言 代码 · 共 97 行

C
97
字号
/* Copyright (c) Colorado School of Mines, 2006.*//* All rights reserved.                       */#include	"sfhdr.h"/*	Print data with a given format****	Written by Kiem-Phong Vo.*/#if __STD_Cint sfprintf(Sfio_t* f, const char* form, ...)#elseint sfprintf(va_alist)va_dcl#endif{	va_list	args;	reg int	rv;#if __STD_C	va_start(args,form);#else	reg Sfio_t*	f;	reg char*	form;	va_start(args);	f = va_arg(args,Sfio_t*);	form = va_arg(args,char*);#endif	rv = sfvprintf(f,form,args);	va_end(args);	return rv;}#if __STD_Cssize_t sfvsprintf(char* s, size_t n, const char* form, va_list args)#elsessize_t sfvsprintf(s, n, form, args)char*	s;size_t	n;char*	form;va_list	args;#endif{	Sfio_t	*f;	ssize_t	rv;	/* make a temp stream */	if(!(f = sfnew(NIL(Sfio_t*),NIL(char*),(size_t)SF_UNBOUND,                        -1,SF_WRITE|SF_STRING)) )		return -1;	if((rv = sfvprintf(f,form,args)) < 0 )		return -1;	if(s)	{	if(sfputc(f, 0) < 0)			return -1;		if(n > 0)			memcpy(s, f->data, rv < n ? rv+1 : n);	}	sfclose(f);	_Sfi = rv;	return rv;}#if __STD_Cssize_t sfsprintf(char* s, size_t n, const char* form, ...)#elsessize_t sfsprintf(va_alist)va_dcl#endif{	va_list	args;	ssize_t	rv;#if __STD_C	va_start(args,form);#else	reg char*	s;	reg size_t	n;	reg char*	form;	va_start(args);	s = va_arg(args,char*);	n = va_arg(args,size_t);	form = va_arg(args,char*);#endif	rv = sfvsprintf(s,n,form,args);	va_end(args);	return rv;}

⌨️ 快捷键说明

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