先介绍下atoi()函数和itoa()函数的功能:
atoi()函数:
将字符串转化为整形值。形参为char*,返回值为int。以非空字符串开始,遇到非数字字符或者’\0’结束。其他返回0。
itoa()函数:
将整形数字转化为字符串,形参是int,返回值是char*.
以下为简单实现两个函数的代码:
atoi()函数
int my_atoi(const char* str)
{
int flag=1;//标记正负号
int ret=0;
//跳过空格
while(isspace(*str))
str++;
//空指针,字符串为空
if(NULL==str || '\0'==*str)
return 0;
if('-'==*str)
flag=-1;
if('-'==*str || '+'==*str)
str++;
while(*str != '\0')
{
if(*str <='9' && *str >='0')
ret=ret*10+*str-'0';
else
break;
str++;
}
if(-1==flag)//负数
ret=-ret;
if(*str == '\0')//正常退出
return ret;
return 0;
}
itoa()函数
char* my_itoa(int num)
{
char str[1024];
int flag=1;//正数
int i=0;
int j=0;
if(num<0)//负数,转成正数
{
num=-num;
flag=-1;
}
while(num)
{
str[i++]=num%10+'0';
num/=10;
}
if(-1 ==flag)
str[i++]='-';
str[i]='\0';//字符串结束符
printf("%s",str);
//将字符串翻转过来
i--;//i标记str中最后一个非\0的字符
while(j<i)
{
char temp=str[i];
str[i]=str[j];
str[j]=temp;
i--,j++;
}
return str;
}