1.问题引入:怎样将int类型转换成字符串输出?
方法一:不在linux环境下,可以使用 itoa
itoa()函数
itoa():char *itoa( int value, char *string,int radix);
原型说明:
value:欲转换的数据。 string:目标字符串的地址。 radix:转换后的进制数,可以是10进制、16进制等,范围必须在 2-36。
功能:将整数value 转换成字符串存入string 指向的内存空间 ,radix 为转换时所用基数(保存到字符串中的数据的进制基数)。 返回值:函数返回一个指向 str,无错误返回。
int main()
{
int num = 10;
char str[100];
itoa(num, str, 2);
printf("%s/n", str);
return 0;
}
但这个在linux环境下不支持,这就可以使用snprintf()
方法二:
snprintf()函数
int snprintf(char *str, size_t size, const char *format, ...);
【参数】str为要写入的字符串;n为要写入的字符的最大数目,超过n会被截断;format为格式化字符串,与printf()函数相同;argument为变量。
【返回值】成功则返回参数str 字符串长度,失败则返回-1,错误原因存于errno 中。
int main()
{
int arr[3] = {0,1,2};
char str[5];
int ret = snprintf(str, sizeof(arr[0]), "%s", arr[0]);//将数组其中的一个值,按字符串输出
printf("%d\n",ret);
printf("%s",str);
return 0;
}
注意:
1.函数返回值并不是实际写入字符串的大小,是欲要写入字符串的大小。
2.此函数会自动在字符串末尾补0,不需要再额外添加
|