C语言atoi()、atof()自定义起始转化位
C语言中的atoi()和atof()函数都是将字符串转换为数值类型的函数,其中atoi()函数将字符串转换为整数类型,
而atof()函数将字符串转换为浮点数类型。
头文件
#include <stdlib.h>
atoi()
atoi()是C语言中一个常用的函数,用于将字符串转换为整型数值。
函数原型为:
int atoi(const char *str);
函数参数为一个字符串指针,返回值为整型数值。函数会将参数指定的字符串转换为整型数值,并返回转换后的结果。如果字符串不能转换为整型数值,函数会返回0。
该函数会自动跳过字符串开头的空格字符,直到找到第一个有效的数字字符。然后,函数会将其后面的数字字符依次转换为整型数值,直到遇到非数字字符为止。
例如,对于字符串"123",该函数会返回整型数值123;对于字符串" 123 abc",该函数也会返回整型数值123,忽略前后的空格和字母。
需要注意的是,该函数对于不符合整型数值范围的字符串会返回未定义的结果。因此,在使用该函数时,应该确保字符串符合整型数值的范围限制。
示例代码如下:
#include <stdio.h>
#include <stdlib.h>
int main() {
char str1[] = "123";
char str2[] = " 123 abc";
char str3[] = "2147483648"; // 超过int类型范围的字符串
int num1 = atoi(str1);
int num2 = atoi(str2);
int num3 = atoi(str3);
printf("num1 = %d\n", num1);
printf("num2 = %d\n", num2);
printf("num3 = %d\n", num3);
return 0;
}
输出结果为:
num1 = 123
num2 = 123
num3 = -2147483648
那么本文的第一个重点来了 !!!
自定义起始转化位。
示例代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a[]="[123,456]";
int ret = atoi(a+5);
printf("%d\n", ret);
}
输出结果为:
456
atof()
atof()是C语言中一个常用的函数,用于将字符串转换为双精度浮点型数值。
函数原型为:
double atof(const char *str);
函数参数为一个字符串指针,返回值为双精度浮点型数值。函数会将参数指定的字符串转换为双精度浮点型数值,并返回转换后的结果。如果字符串不能转换为双精度浮点型数值,函数会返回0.0。
该函数会自动跳过字符串开头的空格字符,直到找到第一个有效的数字字符。然后,函数会将其后面的数字字符依次转换为双精度浮点型数值,直到遇到非数字字符为止。如果字符串中包含小数点,函数会将小数点后面的数字转换为浮点型数值。如果字符串中包含指数符号(如e或E),函数会将指数部分的数值乘以相应的幂次加到结果中。
例如,对于字符串"3.14159",该函数会返回浮点型数值3.14159;对于字符串" 123.45E-2 abc",该函数会返回浮点型数值1.2345,忽略前后的空格和字母。
需要注意的是,该函数对于不符合双精度浮点型数值范围的字符串会返回未定义的结果。因此,在使用该函数时,应该确保字符串符合双精度浮点型数值的范围限制。
示例代码如下:
#include <stdio.h>
#include <stdlib.h>
int main() {
char str1[] = "3.14159";
char str2[] = " 123.45E-2 abc";
char str3[] = "1.7976931348623158E+308"; // 超过double类型范围的字符串
double num1 = atof(str1);
double num2 = atof(str2);
double num3 = atof(str3);
printf("num1 = %lf\n", num1);
printf("num2 = %lf\n", num2);
printf("num3 = %lf\n", num3);
return 0;
}
输出结果为:
num1 = 3.141590
num2 = 1.234500
num3 = inf
那么本文的第二个重点来了!!!
自定义起始转化位。
示例代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a[]="[[]1.23456]";
double ret = atof(a+3);
printf("%f\n", ret);
}
输出结果为:
1.234560