Chinaunix首页 | 论坛 | 博客
  • 博客访问: 380318
  • 博文数量: 181
  • 博客积分: 215
  • 博客等级: 民兵
  • 技术积分: 313
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-17 19:39
个人简介

王的男人

文章分类

全部博文(181)

文章存档

2016年(2)

2015年(35)

2014年(17)

2013年(84)

2012年(49)

我的朋友

分类: C/C++

2012-06-10 23:49:35

前两天写了下atol,今天下午就想了想写了itoa;没想到这个还挺复杂函数原型

char *itoa( int value, char *str);


点击(此处)折叠或打开

  1. char *itoa(int value, char *str)
  2. {
  3.     char dig[] = "0123456789";
  4.     int i = 0, neg = 1;
  5.     char *s, *e;
  6.     char mid;
  7.     long q = 0;
  8.     int r = 0;

  9.     if(str == NULL)
  10.         return NULL;
  11.     if(value > 0)
  12.     {
  13.         neg = 0;
  14.         value = -value;
  15.     }
  16.     while(value <= -10)
  17.     {
  18.         q = value / 10;
  19.         r = value % 10;
  20.         if(r > 0)
  21.         {
  22.             r -= 10;
  23.             q++;
  24.         }
  25.         str[i++] = (-r) + dig[0];
  26.         value = q;
  27.     }
  28.     str[i] = (-value) + dig[0];
  29.     if(neg == 1){
  30.         str[i+1] = '-';
  31.         str[i+2] = '\0';
  32.         e = str + (i+1);
  33.     }else{
  34.         str[i+1] = '\0';
  35.         e = str + i;
  36.     }
  37.     
  38.     for( s = str; s < e; s++, e--)
  39.     {
  40.         mid = *s;
  41.         *s = *e;
  42.         *e = mid;
  43.     }
  44.     return str;
  45. }

阅读(2938) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~