您的位置:首页 > 编程语言 > C语言/C++

C语言atoi()和itoa()函数的实现

2013-07-18 17:21 239 查看
字符串转换为整数:

[b]int myatoi(char *src)[/b]

[b]{
  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;
  }
[/b]

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

整数转换为字符串
[b]char* myitoa(int num,char *str)[/b]
[b]{[/b]
[b]   char flag = 0;[/b]
[b]   int i = 0, count = 0, j = 0;[/b]
[b]   /*参数监测*/[/b]
[b]   if ( NULL = str){[/b]
[b]   return NULL;[/b]
[b]   }[/b]
[b]   /*判断数值的正负,设置对应的符号*/[/b]
[b]   if ( num < 0){[/b]
[b]   str[ i++] = '-';[/b]
[b]   /*同时要对数值取绝对值,保证后面取余整数操作正常*/[/b]
[b]   num = -num;[/b]
[b]   }[/b]
[b]   while ( num / 10){[/b]
[b]   /*count用来保存实际的数字个数,便于后期的顺序调换*/[/b]
[b]   ++count;[/b]
[b]   /*实际保存的顺序为反序列*/[/b]
[b]   str[i++] = num%10 + 48;[/b]
[b]   num /= 10;[/b]
[b]   }[/b]
[b]   /*字符串结束符*/[/b]
[b]   str[i] = '\0';[/b]
[b]   /*实现数据的较好操作*/[/b]
[b]   if ( str[ 0 ] == '-'){[/b]
[b]   i = 1;[/b]
[b]   }[/b]
[b]   /*实际交换的小标区间为i~~j*/[/b]
[b]   j = count + i - 1;[/b]
[b]   for ( ; i < j ; ++i, --j){[/b]
[b]   /*数据的较好操作*/[/b]
[b]   str[i ] = str[i ] + str[j];[/b]
[b]   str[j] = str[i] - str[j];[/b]
[b]   str[i] = str[i] - str[j];[/b]
[b]   }[/b]
[b]   /*返回实际的字符串*/[/b]
[b]   return str;[/b]
[b]}[/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: