C函数atoi,itoa的实现代码

 我自己写的C函数atoi,itoa的一个实现,代码如下:

 

// 返回值 -1表示出错
// 参数num引用返回转换后的整数
int  atoi( int &  num, const   char   *  s)
{
 
if( s == NULL)
  
return -1;
 
const char * p = s;
 
while (*== ' ')
 
{
  
++p;
 }

 
int bits = 0;
 
bool nagetive = false;
 
if*== '-' )
 
{
  nagetive 
= true;
  
++p;
 }

 
const char * pBegin = p;
  
 
int endSpace = 0;
 
int endBit = -1;
 
while (*!= NULL)
 
{
  
if*== '.' )
  
{
   
if( endBit > -1 )
    
return -1;
   endBit 
= bits++;
   
++p;
   
continue;
  }

  
bool endSpace = false;
  
while*!= NULL && (char)*== ' ' )
  
{
   
++p;
   endSpace 
= true;
  }

  
if( endSpace )
  
{
   
if*== NULL )
    
break;
   
return -1;
  }

  
if( (char)*< '0' || (char)*> '9' )
   
return -1;
  
  bits
++;
  p
++;
 }

 bits 
= endBit == -1 ? bits : endBit;
 
int sum = 0;
 
for(int i = 0; i < bits; ++i)
 
{
  sum 
= sum * 10 + pBegin[i] - (char)'0';
 }

 num 
= sum;
 
if( nagetive )
  num 
= -num;
 
return 0;
}


// 返回值为转换后的C字符串,使用完以后需要调用delete []
char   *  itoa( int  num)
{
 
if( num == 0 )
 
{
  
char * pChr = new char[2];
  
*pChr++ = '0';
  
*pChr = 0;
  
return pChr;
 }

 
bool negitive = false;
 
if( num < 0 )
 
{
  negitive 
= true;
  num 
= -num;
 }

 
char * p = new char[12];
 p[
11= 0;
 
int temp = num;
 
int t = 0;
 
int index = 10;
 
while( (temp/10>= 1 )
 
{
  t 
= temp % 10;
  temp 
= temp/10;
  p[index
--= (char)(t + (char)'0');
 }

 p[index] 
= (char)(temp + (char)'0');
 
int size = 11 - index + 1;
 
if( negitive )
  size
++;
 
char *val = new char[size];
 val[size 
- 1= 0;
 
int i = 0;
 
if( negitive )
 
{
  val[i
++= '-';
 }

 
while( i < size)
 
{
  val[i
++= p[index++];
 }

 delete [] p;
 
return val;
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值