您的位置:首页 > 其它

atoi函数和itoa函数的简单实现

2014-10-11 23:31 218 查看
#include <iostream>
#include <string.h>

using namespace std;

int my_atoi(const char* in_str,const int length)
{
int re=0;
int i=0;
bool tag=false;
if(in_str[0]=='-')
{
i=1;
tag=true;
}
for(i;i<length;++i)
{
re=re*10+in_str[i]-'0';
}
if(tag)
re=0-re;
return re;
}

char *reverse(char *s)
{
char temp;
char *p = s;    //p指向s的头部
char *q = s;    //q指向s的尾部
while(*q)
++q;
q--;

//交换移动指针,直到p和q交叉
while(q > p)
{
temp = *p;
*p++ = *q;
*q-- = temp;
}
return s;
}

char * my_itoa(int in_num,char* re)
{
int i=0;
bool tag=false;
if(in_num<0)
{
in_num=0-in_num;
tag=true;
}
do
{
re[i++]='0'+in_num%10;
in_num=in_num/10;
}while(in_num!=0);
if(tag)
{
re[i++]='-';
}
re[i]='\0';
return reverse(re);
}

int main()
{
char* a="-123";
int ire;
char cre[100]="";
ire=my_atoi(a,strlen(a));
my_itoa(ire,cre);
cout << sizeof(cre)<<":"<<strlen(cre)<<":"<<a<<":"<<ire<<":"<<cre<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: