#include <iostream>
using namespace std;
#include <stdio.h>
#include <string.h>
//输入"12345",输出对应的int值
int myAtoi(const char *number)
{
int retval = 0;
while ( '\0' != *number )
{
retval = retval *10 + *number - '0';
number ++;
}
return retval;
}
//递归求字符串长度
int myStrLen(const char *src)
{
if ( *src == '\0' )
{
return 0;
}
return 1+ myStrLen (src+1);
}
//字符串翻转,根据参数判断是原地翻转还是重新拷贝翻转
void myReverse(char *src,char *dst)
{
int srcLen = myStrLen(src);
if ( src == dst ) //reverse in place
{
char *start = src;
char *end = src + srcLen-1;
while ( start <= end )
{
char tmp = *start;
*start = *end;
*end = tmp;
start ++;
end --;
}
}
else
{
while ( srcLen )
{
char *end = src + srcLen - 1;
*dst = *end;
dst ++;
srcLen -- ;
}
*dst = '\0';
}
}
//输入int,根据对应的进制转换成相应的字符串
void myItoa( int number, char *result,int radix )
{
if ( number < 0 )
{
*result = '-';
result ++;
}
char *start = result;
while ( number )
{
int lower_number = number % radix;
*start = lower_number + '0';
start ++;
number = (number - lower_number)/radix;
}
myReverse(result,result);
return ;
}
int main()
{
cout << myAtoi ("123456")<<endl;
char result[32] = {0};
myItoa (54321,result,10);
fprintf(stderr,"%s\n",result);
memset(result,'\0',32);
myItoa (543210,result,10);
char buffer[32];
myReverse("goodboy",buffer);
fprintf(stderr,"%s\n",buffer);
return 0;
}