double atof(const char *nptr) 将字符串转换成双精度浮点型数
int atoi(const char *nptr) 将字符串转换成整形数
long atol(const char *nptr) 将字符串转换成长整形数
double strtod(const char *nptr, char **endptr) 将字符串转换成双精度浮点型数
long int strtol(const char *nptr, char **endptr, int base) 将字符串转换成长整型数
unsigned long int strtoul(const char *nptr, char **endptr, int base) 将字符串转换成无符号长整形
char *gcvt(double number, size_t ndigits, char *buf) 将浮点型数转换为字符串,取四舍五入
atof()、atoi()和atol()函数的形式参数为字符型常量指针,返回值为指针所指向的字符串所代表的数值,函数的处理过程中不能修改实际参数的数值。如果该字符串第一位不是数字,那么返回值不确定。字符串任意一个数字以外的符号,包括小数点都能结束函数的转换过程。因此如果字符串表示的是一个浮点型数据,小数点或指数符号及后面的数据将被忽略。
strtod()函数的形式参数为字符型常量指针和指向字符串的指针。字符型常量指针指向包含要转换为双精度浮点型数据的字符串,剩余未转换字符串的首位置赋值给字符串指针。
#include <stdlib.h>
#iinclude <stdio.h>
int main()
{
const char *s = {"87.99%已完成"};
char *p;
double d;
d = strtod(s, &p);
printf("数值是:%.2f\n", d);
printf("%.2f后的字符串是:%s\n", d, p);
return 0;
}
输出结果为:
数值是:87.99
87.99后的字符串是:%已完成