C函数atoi,itoa的实现代码

    技术2022-05-11  66

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

     

    // 返回值 -1表示出错 // 参数num引用返回转换后的整数 int  atoi( int &  num, const   char   *  s) if( s == NULL)  return -1const char * p = s; while (*== ' '{  ++p; } int bits = 0bool nagetive = falseif*== '-' ) {  nagetive = true;  ++p; } const char * pBegin = p;   int endSpace = 0int endBit = -1while (*!= 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 = 0for(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 = falseif( num < 0 ) {  negitive = true;  num = -num; } char * p = new char[12]; p[11= 0int temp = num; int t = 0int index = 10while( (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 + 1if( negitive )  size++char *val = new char[size]; val[size - 1= 0int i = 0if( negitive ) {  val[i++= '-'; } while( i < size) {  val[i++= p[index++]; } delete [] p; return val;}

    最新回复(0)