#include <stdio.h>
int my_atoi(char* pstr)
{
int integer=0,sign;//定义整形数和符号数
if(pstr == NULL)
return -1;
while(*pstr==' ') //跳过前面的空格字符
pstr++;
//判断正负号 如果是正号,指针指向下一个字符 如果是符号,把符号标记为Integer_sign置-1,然后再把指针指向下一个字符
sign = (*pstr =='-')? -1:1;
if(*pstr == '-' || *pstr == '+')
pstr++;
//把数字字符串逐个转换成整数,并把最后转换好的整数赋给Ret_Integer
while(*pstr >= '0' && *pstr <= '9')
{
integer = integer * 10 + *pstr - '0';
pstr++;
}
return integer*sign;
}
char *my_itoa(int num)
{
int i = 0,j=0,sign = num;
char temp[100],str[100]; //temp用来取每个数字字符 ,str用来存逆序的字符串
if((sign = num) < 0) //如果是负数,先转为正数
{
num = -num;
}
do //从各位开始变为字符,直到最高位,最后应该反转
{
temp[i++] = num%10 + '0';
num = num/10;
}while(num > 0);
if(sign < 0) //如果是负数,补上负号
{
temp[i++] = '-';
}
temp[i] = '\0'; //最后加上字符串结束符
//将存储的字符反转
//printf("%s\n",temp);//for test
i--;
while(i>=0)
{
str[j] = temp[i];
j++;
i--;
}
str[j]= '\0';
return str;
}
int main(void)
{
char *str ="-123";
printf("%d\n",my_atoi(str));
char *s =my_itoa(-456);
printf("%s\n",s);
return 0;
}