C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。
1.int/float to string/array:
C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明。
● itoa():将整型值转换为字符串。
● ltoa():将长整型值转换为字符串。
● ultoa():将无符号长整型值转换为字符串。
● gcvt():将浮点型数转换为字符串,取四舍五入。
● ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。
● fcvt():指定位数为转换精度,其余同ecvt()。
除此外,还可以使用sprintf系列函数把数字转换成字符串,其比itoa()系列函数运行速度慢
2. string/array to int/float
C/C++语言提供了几个标准库函数,可以将字符串转换为任意类型(整型、长整型、浮点型等)。
● atof():将字符串转换为双精度浮点型值。
● atoi():将字符串转换为整型值。
● atol():将字符串转换为长整型值。
● strtod():将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字。
● strtol():将字符串转换为长整值,并报告不能被转换的所有剩余数字。
● strtoul():将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字。
gcvt():将浮点数转换字符串,取四舍五入。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num_int = 95;
double num_double = 95.12f;
char str_int[30];
char str_double[30];
gcvt(num_double, 8, str_double);//8表示精确位数。
printf(“str_double :%s\n”, str_double);
}
程序输出结果:str_double :95.120003
fcvt 把一个浮点数转换为字符串
【函数原型】
char *fcvt(double value, int ndigit, int *decpt, int *sign);
【参数】
value:要转换的浮点数,输入参数
ndigit:取小数的位数,输入参数
decpt:表示小数点的位置,输出参数
sign:表示value的符号,0为正数,1为负数,输出参数
【代码示例】
int _tmain(int argc, _TCHAR* argv[])
{
double a = 1234.987654321;
double b = -12345.123456189;
char *ptr;
int decpt, sign;
ptr = fcvt(a, 4, &decpt, &sign);
printf(“a’s decpt: %d\n”, decpt); //输出结果:a’s decpt: 4
printf(“a value=%c%s\n”, sign==0?’ ‘:’-‘, ptr);//输出结果:a value= 12349877
ptr = fcvt(b, 6, &decpt, &sign);
printf(“b’s decpt: %d\n”, decpt);//输出结果:/b’s decpt: 5
printf(“b value=%c%s\n”, sign==0?’ ‘:’-‘, ptr);//输出结果:b value=-12345123456
return 0;
}