home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume9 / siotools / part01 / utoa.c < prev    next >
Encoding:
C/C++ Source or Header  |  1989-12-04  |  1.6 KB  |  76 lines

  1. /* CHK=0xDD15 */
  2. /*+-------------------------------------------------------------------------
  3.     utoa.c - fast substitutes for most sprintf needs
  4.     ...!gatech!emory!tridom!wht
  5.  
  6.   Defined functions:
  7.     utoda_common(buf,width,n,leading)
  8.     utooa_common(buf,width,n,leading)
  9.  
  10. --------------------------------------------------------------------------*/
  11. /*+:EDITS:*/
  12. /*:11-29-1989-03:32-wht-creation */
  13.  
  14. #include "utoa.h"
  15.  
  16. /*+-------------------------------------------------------------------------
  17.     utoda_common(buf,width,n,leading) unsigned to decimal ascii
  18. --------------------------------------------------------------------------*/
  19. void
  20. utoda_common(buf,width,n,leading)
  21. char *buf;
  22. int width;
  23. unsigned n;
  24. char leading;
  25. {
  26.     register unsigned div;
  27.     register char *ep = &buf[width];
  28.  
  29.     *ep = '\0';
  30.     if(n == 0)
  31.         *--ep = '0';
  32.     while(ep-- > buf)
  33.     {
  34.         if(n <= 0)
  35.             *ep = leading;
  36.         else
  37.         {
  38.             div = n / 10;
  39.             *ep = n - 10*div + '0';
  40.             n = div;
  41.         }
  42.     }
  43. }    /* end of utoda_common */
  44.  
  45. /*+-------------------------------------------------------------------------
  46.     utooa_common(buf,width,n,leading) unsigned to octal ascii
  47. --------------------------------------------------------------------------*/
  48. void
  49. utooa_common(buf,width,n,leading)
  50. char *buf;
  51. int width;
  52. unsigned n;
  53. char leading;
  54. {
  55. register unsigned div;
  56. register char *ep = &buf[width];
  57.  
  58.     *ep = '\0';
  59.     if(n == 0)
  60.         *--ep = '0';
  61.     while(ep-- > buf)
  62.     {
  63.         if(n <= 0)
  64.             *ep = leading;
  65.         else
  66.         {
  67.             div = n >> 3;
  68.             *ep = n - (div << 3) + '0';
  69.             n = div;
  70.         }
  71.     }
  72. }    /* end of utooa_common */
  73.  
  74. /* vi: set tabstop=4 shiftwidth=4: */
  75. /* end of utoa.c */
  76.