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