我自己写的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;}