itoa 和_itoa_s

时间:2022-01-09 06:00:20

1 itoa, 将整数转换为字符串。

char *  itoa ( int value, char * buffer, int radix );

它包含三个参数:

value, 是要转换的数字;

buffer, 是存放转换结果的字符串;

radix, 是转换所用的基数,2-36。如,2:二进制,10:十进制,16:十六进制

扩展:
ltoa() 将长整型值转换为字符串
ultoa() 将无符号长整型值转换为字符串

Example:

#include <stdio.h>
#include <stdlib.h> int _tmain(int argc, _TCHAR* argv[])
{
int n;
char buffer[];
printf("Enter a number:");
scanf("%d",&n);
itoa(n,buffer,);
printf("decimal: %s\n", buffer); itoa(n,buffer,);
printf("hexadecimal: %s\n", buffer); itoa(n,buffer,);
printf("binary: %s\n",buffer); return ;
}

Output:

Enter a number:
decimal:
hexadecimal: 1a0a
binary:

Output

有关 itoa 的详细介绍,请参照 itoa : Convert integer to string.

2_itoa_s, 是 itoa 的安全版本,除了参数和返回值不同,两个函数的行为是相同的,都是将整数转换为字符串。

errno_t _itoa_s(int value, char *buffer, size_t sizeInCharacters, int radix);

_itoa_s 比 itoa 多出一个参数:

value, 是要转换的数字;

buffer, 是存放转换结果的字符串;

sizeInCharacters, 存放转换结果的字符串长度

radix, 是转换所用的基数,2-36。如,2:二进制,10:十进制,16:十六进制

Example:

#include <stdio.h>
#include <stdlib.h>
#include <string.h> int _tmain(int argc, _TCHAR* argv[])
{
char buffer[];
int r;
for( r=; r>=; --r )
{
_itoa_s( -, buffer, , r );
printf( "base %d: %s (%d chars)\n", r, buffer, strnlen(buffer, _countof(buffer)) );
} return ;
}

Output:

base : - ( chars)
base : ( chars)
base : ( chars)
base : ( chars)
base : ( chars)
base : ( chars)
base : ( chars)
base : ( chars)
base : ( chars)

Output

有关 _itoa_s 的详细介绍,请参照_itoa_s, _i64toa_s, _ui64toa_s, _itow_s, _i64tow_s, _ui64tow_s