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

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

?? mxml-string.c

?? minixml2.5最新的版本。 嵌入式xml 解析、查找、生成、遍歷 功能,全部實現(xiàn)是標(biāo)準(zhǔn)c,移植很容易。 最新的2.5
?? C
字號:
/* * "$Id: mxml-string.c 312 2007-10-03 06:25:07Z mike $" * * String functions for Mini-XML, a small XML-like file parsing library. * * Copyright 2003-2007 by Michael Sweet. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * Contents: * *   _mxml_snprintf()  - Format a string. *   _mxml_strdup()    - Duplicate a string. *   _mxml_strdupf()   - Format and duplicate a string. *   _mxml_vsnprintf() - Format a string into a fixed size buffer. *   _mxml_vstrdupf()  - Format and duplicate a string. *//* * Include necessary headers... */#include "config.h"#ifndef HAVE_SNPRINTF/* * '_mxml_snprintf()' - Format a string. */int					/* O - Number of bytes formatted */_mxml_snprintf(char       *buffer,	/* I - Output buffer */               size_t     bufsize,	/* I - Size of output buffer */	       const char *format,	/* I - Printf-style format string */	       ...)			/* I - Additional arguments as needed */{  va_list	ap;			/* Argument list */  int		bytes;			/* Number of bytes formatted */  va_start(ap, format);  bytes = vsnprintf(buffer, bufsize, format, ap);  va_end(ap);  return (bytes);}#endif /* !HAVE_SNPRINTF *//* * '_mxml_strdup()' - Duplicate a string. */#ifndef HAVE_STRDUPchar 	*				/* O - New string pointer */_mxml_strdup(const char *s)		/* I - String to duplicate */{  char	*t;				/* New string pointer */  if (s == NULL)    return (NULL);  if ((t = malloc(strlen(s) + 1)) == NULL)    return (NULL);  return (strcpy(t, s));}#endif /* !HAVE_STRDUP *//* * '_mxml_strdupf()' - Format and duplicate a string. */char *					/* O - New string pointer */_mxml_strdupf(const char *format,	/* I - Printf-style format string */              ...)			/* I - Additional arguments as needed */{  va_list	ap;			/* Pointer to additional arguments */  char		*s;			/* Pointer to formatted string */ /*  * Get a pointer to the additional arguments, format the string,  * and return it...  */  va_start(ap, format);  s = _mxml_vstrdupf(format, ap);  va_end(ap);  return (s);}#ifndef HAVE_VSNPRINTF/* * '_mxml_vsnprintf()' - Format a string into a fixed size buffer. */int					/* O - Number of bytes formatted */_mxml_vsnprintf(char       *buffer,	/* O - Output buffer */                size_t     bufsize,	/* O - Size of output buffer */		const char *format,	/* I - Printf-style format string */ 		va_list    ap)		/* I - Pointer to additional arguments */{  char		*bufptr,		/* Pointer to position in buffer */		*bufend,		/* Pointer to end of buffer */		sign,			/* Sign of format width */		size,			/* Size character (h, l, L) */		type;			/* Format type character */  int		width,			/* Width of field */		prec;			/* Number of characters of precision */  char		tformat[100],		/* Temporary format string for sprintf() */		*tptr,			/* Pointer into temporary format */		temp[1024];		/* Buffer for formatted numbers */  char		*s;			/* Pointer to string */  int		slen;			/* Length of string */  int		bytes;			/* Total number of bytes needed */ /*  * Loop through the format string, formatting as needed...  */  bufptr = buffer;  bufend = buffer + bufsize - 1;  bytes  = 0;  while (*format)  {    if (*format == '%')    {      tptr = tformat;      *tptr++ = *format++;      if (*format == '%')      {        if (bufptr && bufptr < bufend) *bufptr++ = *format;        bytes ++;        format ++;	continue;      }      else if (strchr(" -+#\'", *format))      {        *tptr++ = *format;        sign = *format++;      }      else        sign = 0;      if (*format == '*')      {       /*        * Get width from argument...	*/	format ++;	width = va_arg(ap, int);	snprintf(tptr, sizeof(tformat) - (tptr - tformat), "%d", width);	tptr += strlen(tptr);      }      else      {	width = 0;	while (isdigit(*format & 255))	{	  if (tptr < (tformat + sizeof(tformat) - 1))	    *tptr++ = *format;	  width = width * 10 + *format++ - '0';	}      }      if (*format == '.')      {	if (tptr < (tformat + sizeof(tformat) - 1))	  *tptr++ = *format;        format ++;        if (*format == '*')	{         /*	  * Get precision from argument...	  */	  format ++;	  prec = va_arg(ap, int);	  snprintf(tptr, sizeof(tformat) - (tptr - tformat), "%d", prec);	  tptr += strlen(tptr);	}	else	{	  prec = 0;	  while (isdigit(*format & 255))	  {	    if (tptr < (tformat + sizeof(tformat) - 1))	      *tptr++ = *format;	    prec = prec * 10 + *format++ - '0';	  }	}      }      else        prec = -1;      if (*format == 'l' && format[1] == 'l')      {        size = 'L';	if (tptr < (tformat + sizeof(tformat) - 2))	{	  *tptr++ = 'l';	  *tptr++ = 'l';	}	format += 2;      }      else if (*format == 'h' || *format == 'l' || *format == 'L')      {	if (tptr < (tformat + sizeof(tformat) - 1))	  *tptr++ = *format;        size = *format++;      }      if (!*format)        break;      if (tptr < (tformat + sizeof(tformat) - 1))        *tptr++ = *format;      type  = *format++;      *tptr = '\0';      switch (type)      {	case 'E' : /* Floating point formats */	case 'G' :	case 'e' :	case 'f' :	case 'g' :	    if ((width + 2) > sizeof(temp))	      break;	    sprintf(temp, tformat, va_arg(ap, double));            bytes += strlen(temp);            if (bufptr)	    {	      if ((bufptr + strlen(temp)) > bufend)	      {		strncpy(bufptr, temp, (size_t)(bufend - bufptr));		bufptr = bufend;	      }	      else	      {		strcpy(bufptr, temp);		bufptr += strlen(temp);	      }	    }	    break;        case 'B' : /* Integer formats */	case 'X' :	case 'b' :        case 'd' :	case 'i' :	case 'o' :	case 'u' :	case 'x' :	    if ((width + 2) > sizeof(temp))	      break;	    sprintf(temp, tformat, va_arg(ap, int));            bytes += strlen(temp);	    if (bufptr)	    {	      if ((bufptr + strlen(temp)) > bufend)	      {		strncpy(bufptr, temp, (size_t)(bufend - bufptr));		bufptr = bufend;	      }	      else	      {		strcpy(bufptr, temp);		bufptr += strlen(temp);	      }	    }	    break;	case 'p' : /* Pointer value */	    if ((width + 2) > sizeof(temp))	      break;	    sprintf(temp, tformat, va_arg(ap, void *));            bytes += strlen(temp);	    if (bufptr)	    {	      if ((bufptr + strlen(temp)) > bufend)	      {		strncpy(bufptr, temp, (size_t)(bufend - bufptr));		bufptr = bufend;	      }	      else	      {		strcpy(bufptr, temp);		bufptr += strlen(temp);	      }	    }	    break;        case 'c' : /* Character or character array */	    bytes += width;	    if (bufptr)	    {	      if (width <= 1)	        *bufptr++ = va_arg(ap, int);	      else	      {		if ((bufptr + width) > bufend)		  width = bufend - bufptr;		memcpy(bufptr, va_arg(ap, char *), (size_t)width);		bufptr += width;	      }	    }	    break;	case 's' : /* String */	    if ((s = va_arg(ap, char *)) == NULL)	      s = "(null)";	    slen = strlen(s);	    if (slen > width && prec != width)	      width = slen;            bytes += width;	    if (bufptr)	    {	      if ((bufptr + width) > bufend)	        width = bufend - bufptr;              if (slen > width)	        slen = width;	      if (sign == '-')	      {		strncpy(bufptr, s, (size_t)slen);		memset(bufptr + slen, ' ', (size_t)(width - slen));	      }	      else	      {		memset(bufptr, ' ', (size_t)(width - slen));		strncpy(bufptr + width - slen, s, (size_t)slen);	      }	      bufptr += width;	    }	    break;	case 'n' : /* Output number of chars so far */	    *(va_arg(ap, int *)) = bytes;	    break;      }    }    else    {      bytes ++;      if (bufptr && bufptr < bufend)        *bufptr++ = *format;      format ++;    }  } /*  * Nul-terminate the string and return the number of characters needed.  */  *bufptr = '\0';  return (bytes);}#endif /* !HAVE_VSNPRINTF *//* * '_mxml_vstrdupf()' - Format and duplicate a string. */char *					/* O - New string pointer */_mxml_vstrdupf(const char *format,	/* I - Printf-style format string */               va_list    ap)		/* I - Pointer to additional arguments */{  int	bytes;				/* Number of bytes required */  char	*buffer,			/* String buffer */	temp[256];			/* Small buffer for first vsnprintf */ /*  * First format with a tiny buffer; this will tell us how many bytes are  * needed...  */  bytes = vsnprintf(temp, sizeof(temp), format, ap);  if (bytes < sizeof(temp))  {   /*    * Hey, the formatted string fits in the tiny buffer, so just dup that...    */    return (strdup(temp));  } /*  * Allocate memory for the whole thing and reformat to the new, larger  * buffer...  */  if ((buffer = calloc(1, bytes + 1)) != NULL)    vsnprintf(buffer, bytes + 1, format, ap); /*  * Return the new string...  */  return (buffer);}/* * End of "$Id: mxml-string.c 312 2007-10-03 06:25:07Z mike $". */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费毛片app| 337p粉嫩大胆噜噜噜噜噜91av| 欧美综合欧美视频| 在线观看欧美精品| 欧美高清dvd| 99精品国产视频| 日本道在线观看一区二区| 91精品国产aⅴ一区二区| 久久综合国产精品| 亚洲三级在线看| 蜜臀va亚洲va欧美va天堂| 成人免费av资源| 制服丝袜国产精品| 中文幕一区二区三区久久蜜桃| 亚洲最新视频在线观看| 狠狠狠色丁香婷婷综合久久五月| 91蜜桃网址入口| 精品88久久久久88久久久 | 国产伦精品一区二区三区免费| 波多野结衣中文字幕一区二区三区| 欧美最猛性xxxxx直播| 久久日一线二线三线suv| 亚洲同性同志一二三专区| 亚洲人快播电影网| 99久久国产免费看| 国产在线精品一区二区不卡了| 色女孩综合影院| 2019国产精品| 香蕉av福利精品导航| 豆国产96在线|亚洲| 在线播放国产精品二区一二区四区| 国产日产欧美精品一区二区三区| 亚洲成a人v欧美综合天堂 | 中文字幕精品在线不卡| 五月天视频一区| 99久久久国产精品| www国产成人| 午夜成人免费视频| 91麻豆精品一区二区三区| www激情久久| 青青草原综合久久大伊人精品优势| 91网站在线播放| 国产日韩精品一区二区三区 | 日韩欧美亚洲国产精品字幕久久久| 亚洲女同一区二区| 国产福利电影一区二区三区| 欧美一二三四在线| 亚洲国产成人av好男人在线观看| 成人国产亚洲欧美成人综合网| 精品国产乱码久久久久久牛牛| 亚洲成人综合网站| 一本在线高清不卡dvd| 国产精品二三区| 大桥未久av一区二区三区中文| 2020国产精品自拍| 久久国产精品99久久久久久老狼 | 免费视频最近日韩| 欧美久久久久久蜜桃| 亚洲高清在线精品| 精品视频色一区| 亚洲综合免费观看高清在线观看| 不卡的av在线播放| 中文字幕一区二区三区在线播放| 国产成人在线免费| 日本一区二区视频在线| 国产成人自拍高清视频在线免费播放 | 亚洲欧洲成人自拍| 不卡av在线免费观看| 国产精品久久久久久久久果冻传媒 | 欧美性受极品xxxx喷水| 亚洲男人的天堂av| 99久久国产综合精品麻豆| 日韩理论电影院| 91天堂素人约啪| 亚洲精品中文字幕在线观看| 91毛片在线观看| 亚洲欧美日本在线| 在线免费观看不卡av| 亚洲精品成人精品456| 在线视频综合导航| 亚洲地区一二三色| 欧美一区二区在线视频| 美女免费视频一区二区| 337p粉嫩大胆噜噜噜噜噜91av| 国产一区高清在线| 国产精品毛片久久久久久| 成人免费毛片嘿嘿连载视频| 亚洲三级在线播放| 欧美视频精品在线| 午夜精品久久久久久久99水蜜桃 | 偷拍一区二区三区四区| 777午夜精品免费视频| 另类小说一区二区三区| 久久综合久久综合久久| 国产一区二区精品久久99| 久久久午夜精品理论片中文字幕| 成人午夜激情片| 亚洲综合色噜噜狠狠| 欧美日韩不卡一区| 精品一区二区在线播放| 国产日韩欧美精品在线| 日本精品视频一区二区| 日本一不卡视频| 久久亚区不卡日本| 色综合久久九月婷婷色综合| 日本午夜精品一区二区三区电影| 精品欧美黑人一区二区三区| 成人开心网精品视频| 亚洲最快最全在线视频| 欧美成人video| av激情综合网| 三级不卡在线观看| 久久日韩粉嫩一区二区三区| av网站一区二区三区| 午夜电影网亚洲视频| 日本一区二区免费在线| 欧美亚男人的天堂| 精品一区二区国语对白| 亚洲男人的天堂在线aⅴ视频| 欧美一级高清片在线观看| 成人一区在线观看| 日韩制服丝袜av| 中文字幕精品综合| 91麻豆精品91久久久久同性| 国产精品2024| 亚洲第一二三四区| 国产精品色噜噜| 911国产精品| 91丨porny丨国产入口| 麻豆精品一区二区三区| 亚洲免费看黄网站| 久久久国际精品| 欧美日韩国产中文| 不卡在线观看av| 老司机精品视频导航| ...xxx性欧美| 精品粉嫩超白一线天av| 欧美无砖专区一中文字| 国产大陆a不卡| 日本欧美大码aⅴ在线播放| 中文字幕一区二区三区视频| 欧美不卡一区二区三区四区| 欧美偷拍一区二区| 成人午夜电影久久影院| 紧缚捆绑精品一区二区| 午夜欧美大尺度福利影院在线看| 中文字幕一区二区三中文字幕| 精品国产一区二区在线观看| 欧美午夜精品久久久久久孕妇| 成人福利视频在线看| 九色综合狠狠综合久久| 天堂午夜影视日韩欧美一区二区| 亚洲三级小视频| 日本一区二区成人| 久久日一线二线三线suv| 欧美一区二区日韩| 欧美午夜影院一区| 色综合久久久久久久久久久| 丁香婷婷综合网| 国内成人自拍视频| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲国产精品精华液网站| 亚洲欧洲一区二区在线播放| 国产人妖乱国产精品人妖| 精品久久久久久久人人人人传媒| 欧美精品高清视频| 欧美三级中文字| 91成人国产精品| 91蜜桃网址入口| 91尤物视频在线观看| bt7086福利一区国产| 成人免费视频国产在线观看| 国产经典欧美精品| 国产成人欧美日韩在线电影| 国产在线精品一区在线观看麻豆| 奇米影视7777精品一区二区| 日韩精品一区第一页| 日韩专区一卡二卡| 午夜视频久久久久久| 五月天国产精品| 日本成人超碰在线观看| 日本网站在线观看一区二区三区| 亚洲不卡一区二区三区| 亚洲一区二区三区激情| 午夜成人免费电影| 人人超碰91尤物精品国产| 免费欧美日韩国产三级电影| 奇米色一区二区| 老鸭窝一区二区久久精品| 精品系列免费在线观看| 国模无码大尺度一区二区三区| 韩国午夜理伦三级不卡影院| 精品一区二区三区在线视频| 极品少妇xxxx精品少妇| 国产一区二区三区免费看| 成人性生交大片免费看中文 | 日韩一区在线看| 一区二区三区四区在线播放| 亚洲123区在线观看| 免费人成在线不卡|