面试的时候问到的一个问题,如何将一个数字转化为字符串,如果可以使用库函数的话,sprintf会是一个很好的选择,例如sprintf(s, "%d", 123); //产生"123",sprintf(s, "%10.3f", 3.1415626); //产生:" 3.142"。但是不允许使用库函数的话,就需要自己去思考怎么转化,自己在网上搜索了下原函数,自己实现了下,代码贴下:

 1 void itoa(int num,char str[])
 2 {
 3     int flag=num;            
 4     int i=0;
 5     int j=0;
 6     char temp[100];
 7     if(flag<0)            //判断数字是否为负数,如果为负数把它转化为正数
 8         {
 9             num=-num;
10         }
11     while(num>0)            
12     {
13         temp[i]=(num%10)+'0';    
14         /*把数字从个位开始分解,求出来的数字加上0的ascii码即为该数字的ascii码*/
15         num=num/10;
16         i++;
17     }
18     if(flag<0)
19     {
20         temp[i]='-';        //如果判断之前的数为负数,向数组最后添加一个'-'
21     }
22     temp[i]='\0';            
23     i--;
24     while(i>=0)
25     {
26         str[j]=temp[i];        //将temp数组逆序输入到str数组中
27         j++;
28         i--;
29     }
30     str[j]='\0';
31     printf("%s",str);
32 }

大家可以看下,有什么不对的可以指出,明天介绍下atoi函数的实现。