C实现atoi()函数和itoa()函数

来源:互联网 发布:淘宝网购物女羽绒服 编辑:程序博客网 时间:2024/05/19 06:18

先介绍下atoi()函数和itoa()函数的功能:
atoi()函数:
将字符串转化为整形值。形参为char*,返回值为int。以非空字符串开始,遇到非数字字符或者’\0’结束。其他返回0。
itoa()函数:
将整形数字转化为字符串,形参是int,返回值是char*.
以下为简单实现两个函数的代码:
atoi()函数

int my_atoi(const char* str){  int flag=1;//标记正负号  int ret=0;  //跳过空格  while(isspace(*str))      str++;  //空指针,字符串为空  if(NULL==str || '\0'==*str)      return 0;  if('-'==*str)      flag=-1;  if('-'==*str || '+'==*str)      str++;  while(*str != '\0')  {      if(*str <='9' && *str >='0')          ret=ret*10+*str-'0';      else          break;      str++;  }  if(-1==flag)//负数      ret=-ret;  if(*str == '\0')//正常退出      return ret;  return 0;}

itoa()函数

char* my_itoa(int num){  char str[1024];  int flag=1;//正数  int i=0;  int j=0;  if(num<0)//负数,转成正数  {      num=-num;      flag=-1;  }  while(num)  {      str[i++]=num%10+'0';      num/=10;  }  if(-1 ==flag)    str[i++]='-';  str[i]='\0';//字符串结束符  printf("%s",str);  //将字符串翻转过来  i--;//i标记str中最后一个非\0的字符  while(j<i)  {      char temp=str[i];      str[i]=str[j];      str[j]=temp;      i--,j++;  }  return str;}