itoa是广泛应用的非标准**C语言扩展函数。由于它不是标准C语言函数,所以不能在所有的编译器中使用。但是,大多数的编译器(如**Windows上的)通常在<stdlib.h>头文件中包含这个函数。
字符串缓冲区大小的确定
char* itoa(int val, char* dstbuf, int radix);
itoa() 函数接受三个参数,第一个参数表示要转换为字符类型的整型,第二个参数表示目标字符串缓冲区,第三个参数表示转换的进制数,比如10进制,2进制,8进制等,10 进制的整型 42 在十进制下仍为42
,在二进制下则为:101010
;
#include <stdlib.h>
int main(int, char**)
{
int a = 42;
char arr[3];
// arr数组不需初始化
// 至少 3 个字节,才可保存变量a,否则会报错
// arr[0] = '4'
// arr[1] = '2'
// arr[2] = '\0'
itoa(a, arr, 10);
char arr2[7];
// 至少需要容纳七个字节
// arr[0] = '1'
// arr[1] = '0'
// arr[2] = '1'
// arr[3] = '0'
// arr[4] = '1'
// arr[5] = '0'
// arr[6] = '\0'
itoa(a, arr, 2);
return 0;
}
平台无关的通用的转换函数:sprintf
sprinf()
是C语言标准库(<stdio.h>
)中的函数;
int sprintf(char* dstbuf, const char* format, ...);
且sprintf()
,能力更强,应用更广;其第一个参数表示存放内容的字符串缓冲区,后续的参数与printf()
的参数设置相同,也即将打印到控制台的内容保存到第一个参数所在的字符串缓冲区。
#include <stdio.h>
int main(int, char**)
{
int a = 42;
char arr[3];
sprintf(arr, "%d", a);
return 0;
}
error C4996: ‘itoa’: The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _itoa. See online help for details.
如错误提示所说,将itoa
的函数名改为_itoa
或者_itoa_s
。