实现itoa函数

来源:互联网 发布:ubuntu安装aptget 编辑:程序博客网 时间:2024/05/05 16:46


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); }