关于itoa的第三个参数

来源:互联网 发布:知安 编辑:程序博客网 时间:2024/05/16 04:36

http://community.csdn.net/expert/topicview1.asp?id=1610701

 

itoa的第三个参数是什么意思?能举个例子吗?
---------------------------------------------------------------

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进制表示的字符串。