实现itoa函数


char *itoa(int value, char *string, int radix);
int value 被转换的整数,char *string 转换后储存的 字符 数组,int radix 转换进制数,如2,8,10,16 进制等

头文件<stdlib.h>

程序实例:

#include <stdlib.h>
#include <stdio.h>
int main()
{
int number = 123456;
char string[25];
itoa(number, string, 10);
printf("integer = %d string = %s\n", number, string);
return 0; 
}


itoa函数的实现

//---------------------------------------- 
// 实现 itoa() 函数 
//---------------------------------------- 
char* myitoa(int n, char* str, int radix){ 
  int a = n; 
  int b = 0; 
  int c = 1; 
  char* p = str; 
  
  if (0 == a){                  // 如果是0,直接输出"0" 
    strcpy(str, "0"); 
    return str; 
  } 
  else if (a < 0){              // 如果是负数,记下负号 
    c = -1; 
    a = -a; 
  } 
  
  while(a > 0){                 // 反复取余 
    b = a % radix; 
    a = a / radix; 
  
    if (b < 10)  
      *p = b + '0';             // 0-9 直接输出"0"-"9" 
    else
      *p = b - 10 + 'A';        // > 10 输出"A"-... 
  
    p++; 
  } 
  
  if (c < 0) *p++ = '-';        // 按需添加负号 
  *p = 0;                       // 字符串结尾 
  
  // 下面将字符串 str 逆序即可,也可调用系统函数 str = strrev(str); 
  
  int len = strlen(str);        // 取出长度 
  int i = 0; 
  char ch = 0; 
  
  for (i = 0; i < len / 2; i++){// 首尾交换,共计 len / 2 次 
    c = str[i]; 
    str[i] = str[len - i - 1]; 
    str[len - i - 1] = c; 
  } 
    
  return str; 
} 
  
//---------------------------------------- 
// 测试 itoa() 
//---------------------------------------- 
void Testmyitoa(void) { 
  int n = 0, r = 2; 
  char str[100]; 
  
  // 下面输出为: itoa(11, 2) = 1011 
  n = 11; r = 2; 
  myitoa(n, str, r); 
  printf("itoa(%d, %d) = %s\n", n, r, str); 
  
  // 下面输出为:itoa(-3000, 16) = -BB8   
  n = -3000; r = 16; 
  myitoa(n, str, r); 
  printf("itoa(%d, %d) = %s\n", n, r, str); 
} 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值