C函数atoi,itoa的实现代码
2007-02-12 17:08
127 查看
我自己写的C函数atoi,itoa的一个实现,代码如下:
//返回值 -1表示出错
//参数num引用返回转换后的整数
int atoi(int& num,const char * s)
...{
if( s == NULL)
return -1;
const char * p = s;
while (*p == ' ')
...{
++p;
}
int bits = 0;
bool nagetive = false;
if( *p == '-' )
...{
nagetive = true;
++p;
}
const char * pBegin = p;
int endSpace = 0;
int endBit = -1;
while (*p != NULL)
...{
if( *p == '.' )
...{
if( endBit > -1 )
return -1;
endBit = bits++;
++p;
continue;
}
bool endSpace = false;
while( *p != NULL && (char)*p == ' ' )
...{
++p;
endSpace = true;
}
if( endSpace )
...{
if( *p == NULL )
break;
return -1;
}
if( (char)*p < '0' || (char)*p > '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;
}
//返回值 -1表示出错
//参数num引用返回转换后的整数
int atoi(int& num,const char * s)
...{
if( s == NULL)
return -1;
const char * p = s;
while (*p == ' ')
...{
++p;
}
int bits = 0;
bool nagetive = false;
if( *p == '-' )
...{
nagetive = true;
++p;
}
const char * pBegin = p;
int endSpace = 0;
int endBit = -1;
while (*p != NULL)
...{
if( *p == '.' )
...{
if( endBit > -1 )
return -1;
endBit = bits++;
++p;
continue;
}
bool endSpace = false;
while( *p != NULL && (char)*p == ' ' )
...{
++p;
endSpace = true;
}
if( endSpace )
...{
if( *p == NULL )
break;
return -1;
}
if( (char)*p < '0' || (char)*p > '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;
}
相关文章推荐
- atoi与itoa代码实现
- 陆岛原创:实现壁纸更换的示范代码
- Js实现双击鼠标自动滚动屏幕的示例代码
- 纯CSS3代码实现滑动开关效果
- 【字符串处理算法】字符串包括的算法设计及C代码实现
- 使用cookie绕过验证码登录的实现代码
- 微信跳一跳php代码实现
- jquery实现居中弹出层代码
- 代码实现按钮点击高亮效果
- paypal即时到账php实现代码
- 模拟实现库函数的atoi、atof和itoa
- 常用算法-冒泡排序代码实现
- 基于python的汉字转GBK码实现代码
- jquery 简单的进度条实现代码
- Android社交类APP动态详情代码实现通用模板
- 应用框架的设计与实现——.NET平台4.2代码测试问题解决
- 实现多线程下载的代码
- 39行代码实现JS HTML模板(轻量+高效+易用)
- dns攻击包代码实现
- 手机中点击网页链接实现拨号或保存电话功能实现代码