我自己写的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;
}
本文介绍了一个C语言中atoi与itoa函数的具体实现方法。atoi函数用于将字符串转换为整数,并能处理负号及空白字符;itoa函数则负责将整数转换为字符串形式。
381

被折叠的 条评论
为什么被折叠?



