itoa函数

时间: 2023-07-10 admin IT培训

itoa函数

itoa函数

 itoa是广泛应用的非标准C语言扩展函数。由于它不是标准 C语言函数 ,所以不能在所有的 编译器 中使

itoa界面

用。但是,大多数的编译器(如Windows上的)通常在<stdlib.h>头文件中包含这个函数。在<stdlib.h>中与之有相反功能的函数是atoi。功能:把一整数转换为字符串。

编辑本段用法

  char *itoa(int value, char *string, int radix);   int value 被转换的整数,char *string 转换后储存的 字符 数组 ,int radix 转换进制数,如2,8,10,16 进制等   头文件: <stdlib.h>

itoa操作使用

程序例:   #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函数的 源代码  */   char *myitoa(int num,char *str,int radix)   {

itoa流程图

/* 索引表 */   char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";   unsigned unum; /* 中间 变量  *   int i=0,j,k;   /* 确定unum的值 */   if(radix==10&&num<0) /* 十进制负数 */   {   unum=(unsigned)-num;   str[i++]='-';   }   else unum=(unsigned)num; /* 其他情况 */   /* 逆序 */   do

C语言程序

{   str[i++]=index[unum%(unsigned)radix];   unum/=radix;   }while(unum);   str[i]='\0';   /* 转换 */   if(str[0]=='-') k=1; /* 十进制负数 */   else k=0;   /* 将原来的“/2”改为“/2.0”,保证当num在16~255之间,radix等于16时,也能得到正确结果 */   char temp;   for(j=k;j<=(i-k)/2.0;j++)   {   temp=str[j];   str[j]=str[i-j];   str[i-j]=temp;   }   return str;   }   itoa的第三个参数用于将数字转换成不同的进制。举个例子:   #include <stdlib.h>   #include <stdio.h>   int main(void)   {   int number = 12345;   char string[25];   itoa(number, string, 10); //按十进制转换   printf("integer = %d string = %s\n", number, string);   itoa(number, string, 16); //按16进制转换   printf("integer = %d string = %s\n", number, string);   return 0;   }   输出结果:   integer = 12345 string = 12345 --说明12345的十进制表示就是12345   integer = 12345 string = 3039 ——说明12345的十六进制表示是0x3039   但是要注意,itoa并不是一个标准的C函数,它是Windows特有的,如果要写跨平台的程序,请用sprintf。   用几进制表示吧:)   MSDN的例子   Example   /* ITOA.C: This program converts integers of various   * sizes to strings in various radixes.   */   #include <stdlib.h>   #include <stdio.h>   void main( void )   {   char buffer[20];   int i = 3445;   long l = -344115L;   unsigned long ul = 1234567890UL;   _itoa( i, buffer, 10 );   printf( "String of integer %d (radix 10): %s\n", i, buffer );   _itoa( i, buffer, 16 );   printf( "String of integer %d (radix 16): 0x%s\n", i, buffer );   _itoa( i, buffer, 2 );   printf( "String of integer %d (radix 2): %s\n", i, buffer );   _ ltoa ( l, buffer, 16 );   printf( "String of long int %ld (radix 16): 0x%s\n", l, buffer );   _ ultoa ( ul, buffer, 16 );   printf( "String of unsigned long %lu (radix 16): 0x%s\n", ul, buffer );   }   Output   String of integer 3445 (radix 10): 3445   String of integer 3445 (radix 16): 0xd75   String of integer 3445 (radix 2): 110101110101   String of long int -344115 (radix 16): 0xfffabfcd   String of unsigned long 1234567890 (radix 16): 0x499602d2   指定要转换的进制的基数,其值好象在1--36之间都可以   这个不是C标准库中的函数,而是Windows平台下扩展的,标准库中有sprintf,功能比这个更强,用法跟printf类似:   char str[255];   sprintf(str, "%x", 100); //将100转为16进制表示的字符串。