这个程序是刚学c语言时写在教材上的半成品,前段时间准备面试的时候翻出来看到了,就简单实现出来了,是用C语言写的一个整型数转字符串的函数,用到了递归结构所以代码量比较小,里面通过运用静态类型和动态类型的特点,把数字转换的结果以及应该在字符串中存在的位置保存起来。缺点是只能转换一次,因为静态数只在一开始的时候才会初始化,这个程序转换一次后静态数就不再是零了。解决办法,把静态数移到函数外面,转换一次后由其他函数代它清零。在linux下用gcc编译没有错误,可以运行。
#include<stdio.h>
#include<stdlib.h>
int my_itoa(char* str,int num)
{
static int i=0; //静态类型
int temp = num%10; //缺省下默认为auto
if(num/10!=0)
{
my_itoa(str,num/10);
i++;
str[i] =temp+'0';
}else{
str[i]=temp+'0';
}
str[i+1]='\0';
return i+1;
}
int Usage(char *str)
{
fprintf(stderr,"Usage <number>\n");
exit(0);
return 0;
}
//测试函数用的main函数,使用方法:程序名 数字
int main(int argc,char* args[])
{
int num,length;
char str[32];
num = (argc==2)?strtol(args[1],NULL,10):Usage(args[0]);
length = itoa(str,num);
printf("length = %d,the str is %s\n",length,str);
return 0;
}