⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 snprintf.c

📁 android-w.song.android.widget
💻 C
📖 第 1 页 / 共 4 页
字号:
  char fmtbuf[FALLBACK_FMTSIZE], obuf[FALLBACK_BASE];  int fl;  fl = fe - fs + 1;  strncpy (fmtbuf, fs, fl);  fmtbuf[fl] = '\0';  if ((data->flags & PF_STAR_W) && (data->flags & PF_STAR_P))    sprintf (obuf, fmtbuf, data->width, data->precision, d);  else if (data->flags & PF_STAR_W)    sprintf (obuf, fmtbuf, data->width, d);  else if (data->flags & PF_STAR_P)    sprintf (obuf, fmtbuf, data->precision, d);  else    sprintf (obuf, fmtbuf, d);  for (x = obuf; *x; x++)    PUT_CHAR (*x, data);    }#endif /* FLOATING_POINT */#if !HAVE_SNPRINTFint#if defined (__STDC__)vsnprintf(char *string, size_t length, const char *format, va_list args)#elsevsnprintf(string, length, format, args)     char *string;     size_t length;     const char *format;     va_list args;#endif{  struct DATA data;  if (string == 0 && length != 0)    return 0;  init_data (&data, string, length, format, PFM_SN);  return (vsnprintf_internal(&data, string, length, format, args));}int#if defined(PREFER_STDARG)snprintf(char *string, size_t length, const char * format, ...)#elsesnprintf(string, length, format, va_alist)     char *string;     size_t length;     const char *format;     va_dcl#endif{  struct DATA data;  int rval;  va_list args;  SH_VA_START(args, format);  if (string == 0 && length != 0)    return 0;  init_data (&data, string, length, format, PFM_SN);  rval = vsnprintf_internal (&data, string, length, format, args);  va_end(args);  return rval;}#endif /* HAVE_SNPRINTF */#if !HAVE_ASPRINTFint#if defined (__STDC__)vasprintf(char **stringp, const char *format, va_list args)#elsevasprintf(stringp, format, args)     char **stringp;     const char *format;     va_list args;#endif{  struct DATA data;  char *string;  int r;  string = (char *)xmalloc(ASBUFSIZE);  init_data (&data, string, ASBUFSIZE, format, PFM_AS);  r = vsnprintf_internal(&data, string, ASBUFSIZE, format, args);  *stringp = data.base;		/* not string in case reallocated */  return r;}int#if defined(PREFER_STDARG)asprintf(char **stringp, const char * format, ...)#elseasprintf(stringp, format, va_alist)     char **stringp;     const char *format;     va_dcl#endif{  int rval;  va_list args;  SH_VA_START(args, format);  rval = vasprintf (stringp, format, args);  va_end(args);  return rval;}#endif /* !HAVE_ASPRINTF */#endif /* !HAVE_SNPRINTF || !HAVE_ASPRINTF */#ifdef DRIVERstatic voidmemory_error_and_abort (){  write (2, "out of virtual memory\n", 22);  abort ();}static void *xmalloc(bytes)     size_t bytes;{  void *ret;  ret = malloc(bytes);  if (ret == 0)    memory_error_and_abort ();  return ret;}static void *xrealloc (pointer, bytes)     void *pointer;     size_t bytes;{  void *ret;  ret = pointer ? realloc(pointer, bytes) : malloc(bytes);  if (ret == 0)    memory_error_and_abort ();  return ret;}static voidxfree(x)     void *x;{  if (x)    free (x);}/* set of small tests for snprintf() */main(){  char holder[100];  char *h;  int i, si, ai;#ifdef HAVE_LOCALE_H  setlocale(LC_ALL, "");#endif#if 1  si = snprintf((char *)NULL, 0, "abcde\n");  printf("snprintf returns %d with NULL first argument and size of 0\n", si);  si = snprintf(holder, 0, "abcde\n");  printf("snprintf returns %d with non-NULL first argument and size of 0\n", si);  si = snprintf((char *)NULL, 16, "abcde\n");  printf("snprintf returns %d with NULL first argument and non-zero size\n", si);  /*  printf("Suite of test for snprintf:\n");  printf("a_format\n");  printf("printf() format\n");  printf("snprintf() format\n\n");*//* Checking the field widths */  printf("/%%ld %%ld/, 336, 336\n");  snprintf(holder, sizeof holder, "/%ld %ld/\n", 336, 336);  asprintf(&h, "/%ld %ld/\n", 336, 336);  printf("/%ld %ld/\n", 336, 336);  printf("%s", holder);  printf("%s\n", h);  printf("/%%d/, 336\n");  snprintf(holder, sizeof holder, "/%d/\n", 336);  asprintf(&h, "/%d/\n", 336);  printf("/%d/\n", 336);  printf("%s", holder);  printf("%s\n", h);  printf("/%%2d/, 336\n");  snprintf(holder, sizeof holder, "/%2d/\n", 336);  asprintf(&h, "/%2d/\n", 336);  printf("/%2d/\n", 336);  printf("%s", holder);  printf("%s\n", h);  printf("/%%10d/, 336\n");  snprintf(holder, sizeof holder, "/%10d/\n", 336);  asprintf(&h, "/%10d/\n", 336);  printf("/%10d/\n", 336);  printf("%s", holder);  printf("%s\n", h);  printf("/%%-10d/, 336\n");  snprintf(holder, sizeof holder, "/%-10d/\n", 336);  asprintf(&h, "/%-10d/\n", 336);  printf("/%-10d/\n", 336);  printf("%s", holder);  printf("%s\n", h);/* floating points */  printf("/%%f/, 1234.56\n");  snprintf(holder, sizeof holder, "/%f/\n", 1234.56);  asprintf(&h, "/%f/\n", 1234.56);  printf("/%f/\n", 1234.56);  printf("%s", holder);  printf("%s\n", h);  printf("/%%e/, 1234.56\n");  snprintf(holder, sizeof holder, "/%e/\n", 1234.56);  asprintf(&h, "/%e/\n", 1234.56);  printf("/%e/\n", 1234.56);  printf("%s", holder);  printf("%s\n", h);  printf("/%%4.2f/, 1234.56\n");  snprintf(holder, sizeof holder, "/%4.2f/\n", 1234.56);  asprintf(&h, "/%4.2f/\n", 1234.56);  printf("/%4.2f/\n", 1234.56);  printf("%s", holder);  printf("%s\n", h);  printf("/%%3.1f/, 1234.56\n");  snprintf(holder, sizeof holder, "/%3.1f/\n", 1234.56);  asprintf(&h, "/%3.1f/\n", 1234.56);  printf("/%3.1f/\n", 1234.56);  printf("%s", holder);  printf("%s\n", h);  printf("/%%10.3f/, 1234.56\n");  snprintf(holder, sizeof holder, "/%10.3f/\n", 1234.56);  asprintf(&h, "/%10.3f/\n", 1234.56);  printf("/%10.3f/\n", 1234.56);  printf("%s", holder);  printf("%s\n", h);  printf("/%%10.3e/, 1234.56\n");  snprintf(holder, sizeof holder, "/%10.3e/\n", 1234.56);  asprintf(&h, "/%10.3e/\n", 1234.56);  printf("/%10.3e/\n", 1234.56);  printf("%s", holder);  printf("%s\n", h);  printf("/%%+4.2f/, 1234.56\n");  snprintf(holder, sizeof holder, "/%+4.2f/\n", 1234.56);  asprintf(&h, "/%+4.2f/\n", 1234.56);  printf("/%+4.2f/\n", 1234.56);  printf("%s", holder);  printf("%s\n", h);  printf("/%%010.2f/, 1234.56\n");  snprintf(holder, sizeof holder, "/%010.2f/\n", 1234.56);  asprintf(&h, "/%010.2f/\n", 1234.56);  printf("/%010.2f/\n", 1234.56);  printf("%s", holder);  printf("%s\n", h);#define BLURB "Outstanding acting !"/* strings precisions */  printf("/%%2s/, \"%s\"\n", BLURB);  snprintf(holder, sizeof holder, "/%2s/\n", BLURB);  asprintf(&h, "/%2s/\n", BLURB);  printf("/%2s/\n", BLURB);  printf("%s", holder);  printf("%s\n", h);  printf("/%%22s/ %s\n", BLURB);  snprintf(holder, sizeof holder, "/%22s/\n", BLURB);  asprintf(&h, "/%22s/\n", BLURB);  printf("/%22s/\n", BLURB);  printf("%s", holder);  printf("%s\n", h);  printf("/%%22.5s/ %s\n", BLURB);  snprintf(holder, sizeof holder, "/%22.5s/\n", BLURB);  asprintf(&h, "/%22.5s/\n", BLURB);  printf("/%22.5s/\n", BLURB);  printf("%s", holder);  printf("%s\n", h);  printf("/%%-22.5s/ %s\n", BLURB);  snprintf(holder, sizeof holder, "/%-22.5s/\n", BLURB);  asprintf(&h, "/%-22.5s/\n", BLURB);  printf("/%-22.5s/\n", BLURB);  printf("%s", holder);  printf("%s\n", h);/* see some flags */  printf("%%x %%X %%#x, 31, 31, 31\n");  snprintf(holder, sizeof holder, "%x %X %#x\n", 31, 31, 31);  asprintf(&h, "%x %X %#x\n", 31, 31, 31);  printf("%x %X %#x\n", 31, 31, 31);  printf("%s", holder);  printf("%s\n", h);  printf("**%%d**%% d**%% d**, 42, 42, -42\n");  snprintf(holder, sizeof holder, "**%d**% d**% d**\n", 42, 42, -42);  asprintf(&h, "**%d**% d**% d**\n", 42, 42, -42);  printf("**%d**% d**% d**\n", 42, 42, -42);  printf("%s", holder);  printf("%s\n", h);/* other flags */  printf("/%%g/, 31.4\n");  snprintf(holder, sizeof holder, "/%g/\n", 31.4);  asprintf(&h, "/%g/\n", 31.4);  printf("/%g/\n", 31.4);  printf("%s", holder);  printf("%s\n", h);  printf("/%%.6g/, 31.4\n");  snprintf(holder, sizeof holder, "/%.6g/\n", 31.4);  asprintf(&h, "/%.6g/\n", 31.4);  printf("/%.6g/\n", 31.4);  printf("%s", holder);  printf("%s\n", h);  printf("/%%.1G/, 31.4\n");  snprintf(holder, sizeof holder, "/%.1G/\n", 31.4);  asprintf(&h, "/%.1G/\n", 31.4);  printf("/%.1G/\n", 31.4);  printf("%s", holder);  printf("%s\n", h);  printf("/%%.1G/, 3100000000.4\n");  snprintf(holder, sizeof holder, "/%.1G/\n", 3100000000.4);    asprintf(&h, "/%.1G/\n", 3100000000.4);    printf("/%.1G/\n", 3100000000.4);   printf("%s", holder);  printf("%s\n", h);  printf("abc%%n\n");  printf("abc%n", &i); printf("%d\n", i);  snprintf(holder, sizeof holder, "abc%n", &i);  printf("%s", holder); printf("%d\n\n", i);  asprintf(&h, "abc%n", &i);  printf("%s", h); printf("%d\n\n", i);    printf("%%*.*s --> 10.10\n");  snprintf(holder, sizeof holder, "%*.*s\n", 10, 10, BLURB);  asprintf(&h, "%*.*s\n", 10, 10, BLURB);  printf("%*.*s\n", 10, 10, BLURB);  printf("%s", holder);  printf("%s\n", h);  printf("%%%%%%%%\n");  snprintf(holder, sizeof holder, "%%%%\n");  asprintf(&h, "%%%%\n");  printf("%%%%\n");  printf("%s", holder);  printf("%s\n", h);#define BIG "Hello this is a too big string for the buffer"/*  printf("A buffer to small of 10, trying to put this:\n");*/  printf("<%%>, %s\n", BIG);   i = snprintf(holder, 10, "%s\n", BIG);  i = asprintf(&h, "%s", BIG);  printf("<%s>\n", BIG);  printf("<%s>\n", holder);  printf("<%s>\n\n", h);  printf ("<%%p> vsnprintf\n");  i = snprintf(holder, 100, "%p", vsnprintf);  i = asprintf(&h, "%p", vsnprintf);  printf("<%p>\n", vsnprintf);  printf("<%s>\n", holder);    printf("<%s>\n\n", h);  printf ("<%%lu> LONG_MAX+1\n");  i = snprintf(holder, 100, "%lu", (unsigned long)(LONG_MAX)+1);  i = asprintf(&h, "%lu", (unsigned long)(LONG_MAX)+1);  printf("<%lu>\n", (unsigned long)(LONG_MAX)+1);  printf("<%s>\n", holder);  printf("<%s>\n\n", h);#ifdef HAVE_LONG_LONG  printf ("<%%llu> LLONG_MAX+1\n");  i = snprintf(holder, 100, "%llu", (unsigned long long)(LLONG_MAX)+1);  i = asprintf(&h, "%llu", (unsigned long long)(LLONG_MAX)+1);  printf("<%llu>\n", (unsigned long long)(LLONG_MAX)+1);  printf("<%s>\n", holder);  printf("<%s>\n\n", h);#endif#ifdef HAVE_LONG_DOUBLE  printf ("<%%6.2LE> 42.42\n");  i = snprintf(holder, 100, "%6.2LE", (long double)42.42);  i = asprintf(&h, "%6.2LE", (long double)42.42);  printf ("<%6.2LE>\n", (long double)42.42);  printf ("<%s>\n", holder);  printf ("<%s>\n\n", h);#endif#ifdef HAVE_PRINTF_A_FORMAT  printf ("<%%6.2A> 42.42\n");  i = snprintf(holder, 100, "%6.2A", 42.42);  i = asprintf(&h, "%6.2A", 42.42);  printf ("<%6.2A>\n", 42.42);  printf ("<%s>\n", holder);  printf ("<%s>\n\n", h);  printf ("<%%6.2LA> 42.42\n");  i = snprintf(holder, 100, "%6.2LA", (long double)42.42);  i = asprintf(&h, "%6.2LA", (long double)42.42);  printf ("<%6.2LA>\n", (long double)42.42);  printf ("<%s>\n", holder);  printf ("<%s>\n\n", h);#endif  printf ("<%%.10240f> DBL_MAX\n");  si = snprintf(holder, 100, "%.10240f", DBL_MAX);  ai = asprintf(&h, "%.10240f", DBL_MAX);  printf ("<%.10240f>\n", DBL_MAX);  printf ("<%d> <%s>\n", si, holder);  printf ("<%d> <%s>\n\n", ai, h);  printf ("<%%.10240Lf> LDBL_MAX\n");  si = snprintf(holder, 100, "%.10240Lf", (long double)LDBL_MAX);  ai = asprintf(&h, "%.10240Lf", (long double)LDBL_MAX);  printf ("<%.10240Lf>\n", (long double)LDBL_MAX);  printf ("<%d> <%s>\n", si, holder);  printf ("<%d> <%s>\n\n", ai, h);  /* huh? */  printf("/%%g/, 421.2345\n");  snprintf(holder, sizeof holder, "/%g/\n", 421.2345);  asprintf(&h, "/%g/\n", 421.2345);  printf("/%g/\n", 421.2345);  printf("%s", holder);  printf("%s\n", h);  printf("/%%g/, 4214.2345\n");  snprintf(holder, sizeof holder, "/%g/\n", 4214.2345);  asprintf(&h, "/%g/\n", 4214.2345);  printf("/%g/\n", 4214.2345);  printf("%s", holder);  printf("%s\n", h);  printf("/%%.5g/, 4214.2345\n");  snprintf(holder, sizeof holder, "/%.5g/\n", 4214.2345);  asprintf(&h, "/%.5g/\n", 4214.2345);  printf("/%.5g/\n", 4214.2345);  printf("%s", holder);  printf("%s\n", h);  printf("/%%.4g/, 4214.2345\n");  snprintf(holder, sizeof holder, "/%.4g/\n", 4214.2345);  asprintf(&h, "/%.4g/\n", 4214.2345);  printf("/%.4g/\n", 4214.2345);  printf("%s", holder);  printf("%s\n", h);  printf("/%%'ld %%'ld/, 12345, 1234567\n");  snprintf(holder, sizeof holder, "/%'ld %'ld/\n", 12345, 1234567);  asprintf(&h, "/%'ld %'ld/\n", 12345, 1234567);  printf("/%'ld %'ld/\n", 12345, 1234567);  printf("%s", holder);  printf("%s\n", h);  printf("/%%'ld %%'ld/, 336, 3336\n");  snprintf(holder, sizeof holder, "/%'ld %'ld/\n", 336, 3336);  asprintf(&h, "/%'ld %'ld/\n", 336, 3336);  printf("/%'ld %'ld/\n", 336, 3336);  printf("%s", holder);  printf("%s\n", h);  printf("/%%'ld %%'ld/, -42786, -142786\n");  snprintf(holder, sizeof holder, "/%'ld %'ld/\n", -42786, -142786);  asprintf(&h, "/%'ld %'ld/\n", -42786, -142786);  printf("/%'ld %'ld/\n", -42786, -142786);  printf("%s", holder);  printf("%s\n", h);  printf("/%%'f %%'f/, 421.2345, 421234.56789\n");  snprintf(holder, sizeof holder, "/%'f %'f/\n", 421.2345, 421234.56789);  asprintf(&h, "/%'f %'f/\n", 421.2345, 421234.56789);  printf("/%'f %'f/\n", 421.2345, 421234.56789);  printf("%s", holder);  printf("%s\n", h);  printf("/%%'f %%'f/, -421.2345, -421234.56789\n");  snprintf(holder, sizeof holder, "/%'f %'f/\n", -421.2345, -421234.56789);  asprintf(&h, "/%'f %'f/\n", -421.2345, -421234.56789);  printf("/%'f %'f/\n", -421.2345, -421234.56789);  printf("%s", holder);  printf("%s\n", h);  printf("/%%'g %%'g/, 421.2345, 421234.56789\n");  snprintf(holder, sizeof holder, "/%'g %'g/\n", 421.2345, 421234.56789);  asprintf(&h, "/%'g %'g/\n", 421.2345, 421234.56789);  printf("/%'g %'g/\n", 421.2345, 421234.56789);  printf("%s", holder);  printf("%s\n", h);  printf("/%%'g %%'g/, -421.2345, -421234.56789\n");  snprintf(holder, sizeof holder, "/%'g %'g/\n", -421.2345, -421234.56789);  asprintf(&h, "/%'g %'g/\n", -421.2345, -421234.56789);  printf("/%'g %'g/\n", -421.2345, -421234.56789);  printf("%s", holder);  printf("%s\n", h);#endif  printf("/%%'g/, 4213455.8392\n");  snprintf(holder, sizeof holder, "/%'g/\n", 4213455.8392);  asprintf(&h, "/%'g/\n", 4213455.8392);  printf("/%'g/\n", 4213455.8392);  printf("%s", holder);  printf("%s\n", h);  exit (0);}#endif

⌨️ 快捷键说明

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