首页 > 技术文章 > C语言atoi()和itoa()函数的实现

wyqiang 2013-07-18 17:21 原文

字符串转换为整数:

int myatoi(char *src)

{
  char flag = 0;
  int sum = 0;
  int i = 0;
  int len = strlen(src);
  if ( NULL == src){
  return 0;
  }
  if ( src[i] == '-'){
  flag = '-';
  ++i;
  }
  for ( ; i < len; ++i){
    /*判断字符是否合法*/
    if ( src[i] < 48 && src[i] > 57){
    return p;
    }
    /*数据求和,注意数值的转换问题stc[i] - 48*/
    sum = sum * 10 + src[i] - 48;
  }

  /*根据标志位实现返回正确的正负数*/
  if ( flag == '-'){
  return - sum;
  }else{
  return sum;
  }
}

整数转换为字符串
char* myitoa(int num,char *str)
{
  char flag = 0;
  int i = 0, count = 0, j = 0;
  /*参数监测*/
  if ( NULL = str){
  return NULL;
  }
  /*判断数值的正负,设置对应的符号*/
  if ( num < 0){
  str[ i++] = '-';
  /*同时要对数值取绝对值,保证后面取余整数操作正常*/
  num = -num;
  }
  while ( num / 10){
  /*count用来保存实际的数字个数,便于后期的顺序调换*/
  ++count;
  /*实际保存的顺序为反序列*/
  str[i++] = num%10 + 48;
  num /= 10;
  }
  /*字符串结束符*/
  str[i] = '\0';
  /*实现数据的较好操作*/
  if ( str[ 0 ] == '-'){
  i = 1;
  }
  /*实际交换的小标区间为i~~j*/
  j = count + i - 1;
  for ( ; i < j ; ++i, --j){
  /*数据的较好操作*/
  str[i ] = str[i ] + str[j];
  str[j] = str[i] - str[j];
  str[i] = str[i] - str[j];
  }
  /*返回实际的字符串*/
  return str;
}

推荐阅读