昨天写了一个atoi的库函数实现,感觉不错。今天接着写了一个itoa的库函数实现,鼓励自己加把劲,每天都有收获。希望您提出宝贵意见,大家一起成长。
下面是我的代码:
#include<iostream>
using namespace std;
char *itoa_test(const int number ,char *tem);
void resver(char *start, char *end); //字符串逆序
//void itoa_test(unsigned int number); //一个简单的可以打印但是不能有返回值的转化函数
int main(void)
{
char a[100];
cout<<"input int number:"<<endl;
int number;
while(cin>>number)
{
cout<<itoa_test(number,a)<<endl;
cout<<"input int number: "<<endl;
}
return 0;
}
#if 0
void itoa_test(unsigned int number)
{
unsigned int tem;
tem=number/10;
if(0!=tem)
itoa_test(tem);
putchar(number%10+'0');
}
#endif
char *itoa_test(const int number ,char *str)
{
int sign=0;
int count=0;
int tem=number;
if(0==tem) //判断输入为0 的情况
str[count++]='0';
else
{
while(0!=tem)
{
if(tem<0)
{
sign='-';
tem=-tem;
str[count++]='-';
}
str[count++]=tem%10+'0';
tem=tem/10;
}
}
str[count]='\0';
if(sign)
// resver(&str[1],&str[count-1]);
resver(str+1,str+(count-1));
else
// resver(str,&str[count-1]);
resver(str,str+(count-1));
return str;
}
void resver(char *start, char *end)
{
while(NULL!=start&&NULL!=end&&start<end)
{
char tem =*start;
*start=*end;
*end =tem;
start++;
end--;
}
}
其中好主要做了对 '-' 的处理,输入是int 类型返回一个 char 数组。下面是测试用例: