分析atoi(),atol()和atof()三个函数的功能
字符串转换为数值的函数有:atoi(),atol(),atof(),
1、atoi()函数
int atoi(const char *str);
将“str所指向的整数字符串”转换为一个有符号32位整数。
void Test_atoi(void)
{
char buf[15];//声明char型数组
int retValue;//声明int型变量
retValue=0xFFFFFFFF;//和retValue=-1等价;
strcpy(buf,"10");//将字符串"10"拷贝到buf[]中
retValue=atoi(buf);
//将"整数字符串10"转换为一个有符号32位整数,保存到retValue中
//retValue=10;
strcpy(buf,"-1");//将字符串"-1"拷贝到buf[]中
retValue=atoi(buf);
//将"整数字符串-1"转换为一个有符号32位整数,保存到retValue中
//retValue=-1;其十六进数据为0xFFFFFFFF
retValue=0;
}
2、atol()函数
long int atol(const char *str);
将“str所指向的字符串”转换为一个有符号32位整数。
注意:在MDK-ARM中,“long int”表示有符号32位整数,所以atol()和atoi()功能一样。在16位的系统上,int是16位的,long是32位的。所以atol()和atoi()在16位的系统上还是有区别的。
#include "string.h" //strcpy()需要包含string.h头文件
#include "stdlib.h" //atol()需要包含stdlib.h头文件
void Test_atol(void)
{
char buf[15];//声明char型数组
long int retValue;//声明long int型变量(有符号32位)
retValue=0xFFFFFFFF;//和retValue=-1等价;
strcpy(buf,"10");
retValue=atol(buf);
//将"整数字符串10"转换为一个有符号32位整数,保存到retValue中
//retValue=10;
strcpy(buf,"-1");
retValue=atol(buf);
//将"整数字符串-1"转换为一个有符号32位整数,保存到retValue中
//retValue=-1;其十六进数据为0xFFFFFFFF
retValue=0;
}
3、atof()函数
double atof(const char *str);
将“str所指向的字符串”转换为一个双精度浮点数。
void Test_atof(void)
{
char buf[15];//声明char型数组
double retValue;//声明double型变量(有符号64位)
strcpy(buf,"10.5");
retValue=atof(buf);
//将"整数字符串10.5"转换为一个双精度浮点数,保存到retValue中
//retValue=10.5;
strcpy(buf,"-1.5");
retValue=atof(buf);
//将"整数字符串-1.5"转换为一个双精度浮点数,保存到retValue中
//retValue=-1.5;
retValue=0;
}
若有错误,请给我留言。