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

先介绍下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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值