面试的时候问到的一个问题,如何将一个数字转化为字符串,如果可以使用库函数的话,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函数的实现。