C基础——itoa

来源:互联网 发布:手机追踪软件 编辑:程序博客网 时间:2024/06/03 19:47

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

References

[1] C语言itoa()函数和atoi()函数详解(整数转字符)

0 0