atoi和itoa函数的实现

来源:互联网 发布:iptables 80端口 编辑:程序博客网 时间:2024/05/19 02:41

1 itoa的实现

//1234→4321(存储:str=n%radix,n=n/radix)→ 1234
//todo: 把含有 负数的内容写上去就好了

char * my_itoa2( int num, char *string, int radix )
{
 char* str=string;

 //得到翻转的字符串
 while(num)
 {
  *str=num%radix+'0';   //*str=num%radix-'0';  就是错误的了,哈哈。
  //cout<<*str<<endl;

  num=num/radix;
  str++;
 }
 *str='\0';

 char temp;
 int len=strlen(str);
 for(int i=0;i<len/2;i++)
 {
  temp=str[i];
  str[i]=str[len-1-i];
  str[len-1-i]=temp;
 }
 return string;
}

 

2 atoi的实现

// num=num*10+*str;
//todo:考虑 过界的情况。

int my_atoi( char *str )
{
 if(str==NULL) return 0;
 int num=0,flag=1;

 if(*str=='-')
 {
  flag=-1;
 }
 else
 {
  num=*str-'0';
 }
 str++;

 //while(*st>='0'&&*str<='9')
 while(*str!='\0')
 {
  num=num*10+*str-'0';
  str++;
 }

 return num*flag;
}

 

 

3 测试代码

int main()
{

 char *s="-123567890";  
 cout<<my_atoi(s)<<endl;

 int a=1234;
 //*char str[20]={'\0'};        //需要预先定义好的
 char *str=new char[20]; 
 str=my_itoa2(a,str,10);
 cout<<str<<endl;

 return 0;
}