Programming/C2009. 10. 15. 00:05
char * ltoa (long val, char *buf, unsigned radix)
{
char *p; /* pointer to traverse string */
char *firstdig; /* pointer to first digit */
char temp;      /* temp char */
unsigned digval; /* value of digit */

p = buf;

if (radix == 10 && val < 0) {
   /* negative, so output '-' and negate */
   *p++ = '-';
   val = (unsigned long)(-(long)val);
}

firstdig = p;   /* save pointer to first digit */

do {
   digval = (unsigned) (val % radix);
   val /= radix;       /* get next digit */

   /* convert to ascii and store */
   if (digval > 9)
*p++ = (char) (digval - 10 + 'a');  /* a letter */
   else
*p++ = (char) (digval + '0');       /* a digit */
} while (val > 0);

/* We now have the digit of the number in the buffer, but in reverse
  order.  Thus we reverse them now. */

*p-- = '\\0';    /* terminate string; p points to last digit */

do {
   temp = *p;
   *p = *firstdig;
   *firstdig = temp;   /* swap *p and *firstdig */
   --p;
   ++firstdig; /* advance to next two digits */
} while (firstdig < p); /* repeat until halfway */

return buf;
}

출처 : http://cpueblo.com/programming/cpp/contents/99.html
Posted by skensita
TAG

댓글을 달아 주세요