亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? snprintf.c

?? 網(wǎng)頁抓取程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * Copyright Patrick Powell 1995 * This code is based on code written by Patrick Powell (papowell@astart.com) * It may be used for any purpose as long as this notice remains intact * on all source code distributions *//************************************************************** * Original: * Patrick Powell Tue Apr 11 09:48:21 PDT 1995 * A bombproof version of doprnt (dopr) included. * Sigh.  This sort of thing is always nasty do deal with.  Note that * the version here does not include floating point... * * snprintf() is used instead of sprintf() as it does limit checks * for string length.  This covers a nasty loophole. * * The other functions are there to prevent NULL pointers from * causing nast effects. * * More Recently: *  Brandon Long <blong@fiction.net> 9/15/96 for mutt 0.43 *  This was ugly.  It is still ugly.  I opted out of floating point *  numbers, but the formatter understands just about everything *  from the normal C string format, at least as far as I can tell from *  the Solaris 2.5 printf(3S) man page. * *  Brandon Long <blong@fiction.net> 10/22/97 for mutt 0.87.1 *    Ok, added some minimal floating point support, which means this *    probably requires libm on most operating systems.  Don't yet *    support the exponent (e,E) and sigfig (g,G).  Also, fmtint() *    was pretty badly broken, it just wasn't being exercised in ways *    which showed it, so that's been fixed.  Also, formated the code *    to mutt conventions, and removed dead code left over from the *    original.  Also, there is now a builtin-test, just compile with: *           gcc -DTEST_SNPRINTF -o snprintf snprintf.c -lm *    and run snprintf for results. * *  Thomas Roessler <roessler@guug.de> 01/27/98 for mutt 0.89i *    The PGP code was using unsigned hexadecimal formats. *    Unfortunately, unsigned formats simply didn't work. * *  Michael Elkins <me@cs.hmc.edu> 03/05/98 for mutt 0.90.8 *    The original code assumed that both snprintf() and vsnprintf() were *    missing.  Some systems only have snprintf() but not vsnprintf(), so *    the code is now broken down under HAVE_SNPRINTF and HAVE_VSNPRINTF. * *  Andrew Tridgell (tridge@samba.org) Oct 1998 *    fixed handling of %.0f *    added test for HAVE_LONG_DOUBLE * *  Chris Kirmse (ckirmse@yahoo.com) May 2003 *    fixed handling of leading zeros in the fractional part of a float. * **************************************************************//* #include "config.h" */#define HAVE_STDARG_H/* moved above the #ifdef to avoid warning about empty c-files */#include <string.h>#include <ctype.h>#include <sys/types.h>#if !defined(HAVE_SNPRINTF) || !defined(HAVE_VSNPRINTF)/* Define this as a fall through, HAVE_STDARG_H is probably already set */#define HAVE_VARARGS_H/* varargs declarations: */#if defined(HAVE_STDARG_H)# include <stdarg.h># define HAVE_STDARGS    /* let's hope that works everywhere (mj) */# define VA_LOCAL_DECL   va_list ap# define VA_START(f)     va_start(ap, f)# define VA_SHIFT(v,t)  ;   /* no-op for ANSI */# define VA_END          va_end(ap)#else# if defined(HAVE_VARARGS_H)#  include <varargs.h>#  undef HAVE_STDARGS#  define VA_LOCAL_DECL   va_list ap#  define VA_START(f)     va_start(ap)      /* f is ignored! */#  define VA_SHIFT(v,t) v = va_arg(ap,t)#  define VA_END        va_end(ap)# else/*XX ** NO VARARGS ** XX*/# endif#endif#ifdef HAVE_LONG_DOUBLE#define LDOUBLE long double#else#define LDOUBLE double#endifint snprintf (char *str, size_t count, const char *fmt, ...);int vsnprintf (char *str, size_t count, const char *fmt, va_list arg);static void dopr (char *buffer, size_t maxlen, const char *format,                  va_list args);static void fmtstr (char *buffer, size_t *currlen, size_t maxlen,		    const char *value, int flags, int min, int max);static void fmtint (char *buffer, size_t *currlen, size_t maxlen,		    long value, int base, int min, int max, int flags);static void fmtfp (char *buffer, size_t *currlen, size_t maxlen,		   LDOUBLE fvalue, int min, int max, int flags);static void dopr_outch (char *buffer, size_t *currlen, size_t maxlen, char c );/* * dopr(): poor man's version of doprintf *//* format read states */#define DP_S_DEFAULT 0#define DP_S_FLAGS   1#define DP_S_MIN     2#define DP_S_DOT     3#define DP_S_MAX     4#define DP_S_MOD     5#define DP_S_CONV    6#define DP_S_DONE    7/* format flags - Bits */#define DP_F_MINUS 	(1 << 0)#define DP_F_PLUS  	(1 << 1)#define DP_F_SPACE 	(1 << 2)#define DP_F_NUM   	(1 << 3)#define DP_F_ZERO  	(1 << 4)#define DP_F_UP    	(1 << 5)#define DP_F_UNSIGNED 	(1 << 6)/* Conversion Flags */#define DP_C_SHORT   1#define DP_C_LONG    2#define DP_C_LDOUBLE 3#define char_to_int(p) (p - '0')#define MAX(p,q) ((p >= q) ? p : q)static void dopr (char *buffer, size_t maxlen, const char *format, va_list args){  char ch;  long value;  LDOUBLE fvalue;  char *strvalue;  int min;  int max;  int state;  int flags;  int cflags;  size_t currlen;  state = DP_S_DEFAULT;  currlen = flags = cflags = min = 0;  max = -1;  ch = *format++;  while (state != DP_S_DONE)  {    if ((ch == '\0') || (currlen >= maxlen))      state = DP_S_DONE;    switch(state)    {    case DP_S_DEFAULT:      if (ch == '%')	state = DP_S_FLAGS;      else	dopr_outch (buffer, &currlen, maxlen, ch);      ch = *format++;      break;    case DP_S_FLAGS:      switch (ch)      {      case '-':	flags |= DP_F_MINUS;        ch = *format++;	break;      case '+':	flags |= DP_F_PLUS;        ch = *format++;	break;      case ' ':	flags |= DP_F_SPACE;        ch = *format++;	break;      case '#':	flags |= DP_F_NUM;        ch = *format++;	break;      case '0':	flags |= DP_F_ZERO;        ch = *format++;	break;      default:	state = DP_S_MIN;	break;      }      break;    case DP_S_MIN:      if (isdigit(ch))      {	min = 10*min + char_to_int (ch);	ch = *format++;      }      else if (ch == '*')      {	min = va_arg (args, int);	ch = *format++;	state = DP_S_DOT;      }      else	state = DP_S_DOT;      break;    case DP_S_DOT:      if (ch == '.')      {	state = DP_S_MAX;	ch = *format++;      }      else	state = DP_S_MOD;      break;    case DP_S_MAX:      if (isdigit(ch))      {	if (max < 0)	  max = 0;	max = 10*max + char_to_int (ch);	ch = *format++;      }      else if (ch == '*')      {	max = va_arg (args, int);	ch = *format++;	state = DP_S_MOD;      }      else	state = DP_S_MOD;      break;    case DP_S_MOD:      /* Currently, we don't support Long Long, bummer */      switch (ch)      {      case 'h':	cflags = DP_C_SHORT;	ch = *format++;	break;      case 'l':	cflags = DP_C_LONG;	ch = *format++;	break;      case 'L':	cflags = DP_C_LDOUBLE;	ch = *format++;	break;      default:	break;      }      state = DP_S_CONV;      break;    case DP_S_CONV:      switch (ch)      {      case 'd':      case 'i':	if (cflags == DP_C_SHORT)	  value = va_arg (args, /*short*/ int);	else if (cflags == DP_C_LONG)	  value = va_arg (args, long int);	else	  value = va_arg (args, int);	fmtint (buffer, &currlen, maxlen, value, 10, min, max, flags);	break;      case 'o':	flags |= DP_F_UNSIGNED;	if (cflags == DP_C_SHORT)	  value = va_arg (args, unsigned /*short*/ int);	else if (cflags == DP_C_LONG)	  value = va_arg (args, unsigned long int);	else	  value = va_arg (args, unsigned int);	fmtint (buffer, &currlen, maxlen, value, 8, min, max, flags);	break;      case 'u':	flags |= DP_F_UNSIGNED;	if (cflags == DP_C_SHORT)	  value = va_arg (args, unsigned /*short*/ int);	else if (cflags == DP_C_LONG)	  value = va_arg (args, unsigned long int);	else	  value = va_arg (args, unsigned int);	fmtint (buffer, &currlen, maxlen, value, 10, min, max, flags);	break;      case 'X':	flags |= DP_F_UP;      case 'x':	flags |= DP_F_UNSIGNED;	if (cflags == DP_C_SHORT)	  value = va_arg (args, unsigned /*short*/ int);	else if (cflags == DP_C_LONG)	  value = va_arg (args, unsigned long int);	else	  value = va_arg (args, unsigned int);	fmtint (buffer, &currlen, maxlen, value, 16, min, max, flags);	break;      case 'f':	if (cflags == DP_C_LDOUBLE)	  fvalue = va_arg (args, LDOUBLE);	else	  fvalue = va_arg (args, double);	/* um, floating point? */	fmtfp (buffer, &currlen, maxlen, fvalue, min, max, flags);	break;      case 'E':	flags |= DP_F_UP;      case 'e':	if (cflags == DP_C_LDOUBLE)	  fvalue = va_arg (args, LDOUBLE);	else	  fvalue = va_arg (args, double);	break;      case 'G':	flags |= DP_F_UP;      case 'g':	if (cflags == DP_C_LDOUBLE)	  fvalue = va_arg (args, LDOUBLE);	else	  fvalue = va_arg (args, double);	break;      case 'c':	dopr_outch (buffer, &currlen, maxlen, (char)va_arg (args, int));	break;      case 's':	strvalue = va_arg (args, char *);	if (max < 0)	  max = maxlen; /* ie, no max */	fmtstr (buffer, &currlen, maxlen, strvalue, flags, min, max);	break;      case 'p':	strvalue = (char*)va_arg (args, void *);	fmtint (buffer, &currlen, maxlen, (long) strvalue, 16, min, max, flags);	break;      case 'n':	if (cflags == DP_C_SHORT)	{	  short int *num;	  num = va_arg (args, short int *);	  *num = currlen;        }	else if (cflags == DP_C_LONG)	{	  long int *num;	  num = va_arg (args, long int *);	  *num = currlen;        }	else	{	  int *num;	  num = va_arg (args, int *);	  *num = currlen;        }	break;      case '%':	dopr_outch (buffer, &currlen, maxlen, ch);	break;      case 'w':	/* not supported yet, treat as next char */	ch = *format++;	break;      default:	/* Unknown, skip */	break;      }      ch = *format++;      state = DP_S_DEFAULT;      flags = cflags = min = 0;      max = -1;      break;    case DP_S_DONE:      break;    default:      /* hmm? */      break; /* some picky compilers need this */    }  }  if (currlen < maxlen - 1)    buffer[currlen] = '\0';  else    buffer[maxlen - 1] = '\0';}static void fmtstr (char *buffer, size_t *currlen, size_t maxlen,		    const char *value, int flags, int min, int max){  int padlen, strln;     /* amount to pad */  int cnt = 0;  if (value == 0)  {    value = "<NULL>";  }  for (strln = 0; value[strln]; ++strln); /* strlen */  padlen = min - strln;  if (padlen < 0)    padlen = 0;  if (flags & DP_F_MINUS)    padlen = -padlen; /* Left Justify */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品乡下勾搭老头1| 亚洲国产一区二区视频| 国产精品 欧美精品| 久久久综合网站| 国产成人免费xxxxxxxx| 国产精品嫩草影院com| 成人av先锋影音| 亚洲九九爱视频| 欧美日韩精品专区| 日韩av在线发布| 久久免费电影网| 成人白浆超碰人人人人| 一区二区在线免费| 欧美久久久久免费| 美美哒免费高清在线观看视频一区二区| 欧美三级视频在线播放| 日本成人在线电影网| 久久亚洲春色中文字幕久久久| 国产呦精品一区二区三区网站| 国产欧美一区二区在线观看| 成人国产视频在线观看| 亚洲大尺度视频在线观看| 91麻豆精品国产91久久久久久久久| 久久99国产精品免费网站| 国产精品美女视频| 欧美人狂配大交3d怪物一区| 国产精品白丝av| 一区二区日韩av| 久久久亚洲精品石原莉奈 | 日本v片在线高清不卡在线观看| 日韩欧美一区中文| 99久久精品国产一区二区三区| 午夜影院久久久| 国产片一区二区三区| 91小视频在线免费看| 久久草av在线| 亚洲一区二区高清| 欧美激情一区三区| 欧美精品丝袜中出| 亚洲国产精品一区二区久久| 成人av动漫网站| 亚洲午夜激情网页| 久久噜噜亚洲综合| 欧美日韩亚洲综合在线| 国产成人精品影院| 婷婷国产在线综合| 国产精品欧美综合在线| 日韩一区国产二区欧美三区| 一本色道久久加勒比精品| 精品亚洲porn| 亚洲成人激情社区| 亚洲人成网站在线| 欧美激情一区二区在线| 日韩欧美在线1卡| 欧美日韩中文精品| 一本一道久久a久久精品| 国产精品影视在线观看| 日本欧美一区二区三区| 亚洲国产日韩综合久久精品| 中文字幕一区二区三区在线播放 | 国产亚洲视频系列| 欧美日韩成人一区| 色香蕉成人二区免费| 成人午夜碰碰视频| 国产精品一二三四区| 秋霞电影网一区二区| 三级在线观看一区二区| 亚洲午夜羞羞片| 亚洲精品国产一区二区三区四区在线 | 亚洲一区在线观看免费观看电影高清 | 欧美自拍偷拍一区| av一区二区不卡| 床上的激情91.| 国产成人夜色高潮福利影视| 狠狠色丁香久久婷婷综合_中| 天天综合色天天| 亚洲高清三级视频| 亚洲v日本v欧美v久久精品| 亚洲码国产岛国毛片在线| 亚洲欧洲日韩在线| 综合激情成人伊人| 自拍偷拍国产精品| 亚洲欧美另类在线| 亚洲最新视频在线观看| 夜色激情一区二区| 亚洲成人av一区二区| 午夜精品久久久久久久| 日韩av在线发布| 另类小说图片综合网| 国产在线视视频有精品| 狠狠色伊人亚洲综合成人| 国产乱人伦精品一区二区在线观看| 久久精品国产第一区二区三区| 久久99精品久久久| 国产成人免费在线| 91论坛在线播放| 欧美亚洲一区二区在线观看| 欧美日韩国产综合一区二区| 日韩一区二区中文字幕| 久久免费偷拍视频| 一区二区中文字幕在线| 一片黄亚洲嫩模| 日韩影院在线观看| 国产一区二区美女| kk眼镜猥琐国模调教系列一区二区 | 日本一区二区三区在线不卡| 综合久久综合久久| 日韩精品一二三四| 国产精品一区二区无线| 成av人片一区二区| 欧美日本视频在线| 国产亚洲制服色| 亚洲午夜久久久久久久久电影网 | 久久伊人蜜桃av一区二区| 国产精品三级久久久久三级| 一二三区精品福利视频| 蜜臀精品一区二区三区在线观看| 国内成+人亚洲+欧美+综合在线| 成人久久视频在线观看| 欧美视频中文字幕| 久久久久国色av免费看影院| 一区二区三区色| 精品亚洲成a人在线观看| 91丨porny丨在线| 日韩一区二区精品| 亚洲欧美日韩成人高清在线一区| 日本三级韩国三级欧美三级| 成人午夜视频网站| 日韩欧美自拍偷拍| 亚洲欧美日韩中文播放| 久国产精品韩国三级视频| 91亚洲资源网| 久久久久久久久久久黄色| 亚洲午夜久久久久久久久电影网| 国产福利一区在线| 91精品国产综合久久精品| 亚洲嫩草精品久久| 粉嫩在线一区二区三区视频| 欧美一区午夜精品| 亚洲色图色小说| 国产精品一级二级三级| 91精品欧美一区二区三区综合在| 国产精品色在线观看| 久久91精品久久久久久秒播| 欧美日韩国产综合一区二区三区| 中文字幕一区二区三| 国产乱码字幕精品高清av | 国产一区二区免费在线| 欧美美女黄视频| 亚洲卡通动漫在线| 成人小视频在线| 久久欧美一区二区| 蜜桃av一区二区| 欧美巨大另类极品videosbest | 午夜婷婷国产麻豆精品| 色婷婷久久99综合精品jk白丝| 中文字幕欧美日本乱码一线二线 | 久久久99免费| 麻豆视频观看网址久久| 欧美日韩精品欧美日韩精品一| 亚洲天天做日日做天天谢日日欢 | 91麻豆精品在线观看| 欧美国产精品专区| 国产伦精品一区二区三区免费| 日韩一级免费观看| 奇米在线7777在线精品| 91精品国产欧美日韩| 午夜精品久久久久久久久久久| 欧美在线免费观看亚洲| 夜夜精品浪潮av一区二区三区| 91香蕉国产在线观看软件| 亚洲欧洲成人av每日更新| 成人免费观看视频| 国产精品国产三级国产aⅴ无密码| 国产91丝袜在线播放0| 欧美国产激情一区二区三区蜜月| 国产精品18久久久久久久久久久久| 精品国一区二区三区| 国内精品久久久久影院色| www国产成人免费观看视频 深夜成人网 | 99久久精品免费看| 综合久久久久久久| 欧美亚洲丝袜传媒另类| 亚洲第一综合色| 91精品国产福利在线观看| 日韩精品免费专区| 精品国产一区二区三区av性色| 久久精品999| 中文乱码免费一区二区| 色天天综合久久久久综合片| 亚洲午夜国产一区99re久久| 欧美一区二区三区成人| 国产九九视频一区二区三区| 国产精品国产三级国产普通话99| 91视频国产观看| 蜜臂av日日欢夜夜爽一区| 久久精品人人爽人人爽| 色一情一伦一子一伦一区| 蜜桃av一区二区| 成人欧美一区二区三区视频网页|