您的位置:首页 > 编程语言

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;


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