您的位置:首页 > 其它

atoi和itoa函数的实现

2013-09-16 14:48 274 查看
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;

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  测试