C语言学习记录——字符串转浮点(strtof())和转长整型(strtol())函数

头文件:

#include <stdlib.h>

1.strtof()函数返回值是一个单精度浮点数,它的参数有两个。第一个参数指向要解释的以空字符结尾的字节字符串。第二个参数指向数字后的第一个字符。

用法举例:以串口传参为例

/**********************************
*函数:USART1_Check(char *cmd)
*输入参数:命令字符串
*返回值:无
**********************************/
//假如串口接收到了一个字符串"PID 0.1 0.2 0.3"
void USART1_Check(char *cmd)
{
	   //字符串比较函数比较"PID "和cmd也就是字符串"PID 0.1 0.2 0.3"前4位字符,相同则返回0
		if(strncasecmp("PID ",cmd,4)==0) 
		{
		    char *str;
		    str=cmd+4;                 //字符串"PID 0.1 0.2 0.3"第4位字符地址
		    char *s = str;             //等价于char *s="0.1 0.2 0.3";
		    char *p = NULL;
		    float KP = strtof(s,&p);   //将字符串"0.1"转换成float型0.100000
		    s=p+1;                     //p保存的是0.1后的空字符地址,p+1就等于字符串0.2的地址
		    float KI = strtof(s,&p);   //将字符串"0.2"转换成float型0.200000
		    s=p+1;
		    float KD = strtof(s,&p);   //将字符串"0.3"转换成float型0.300000	
		    Contrl_PID.Kp=KP;
		    Contrl_PID.Ki=KI;
		    Contrl_PID.Kd=KD;
        }
}

2.strtol()函数

函数原型:long int strtol(const char *str , char **endstr , int base);

str为要转换的字符串,endstr 为第一个不能转换的字符的指针,base为字符串str所采用的进制。

用法:将一个字符串str 在基于base进制的情况下进行分割,遇到第一个不合法的字符就需要停止向后遍历,如果合法就向后遍历,取出合法部分的值给与返回值即可。(此时合法的值和base有关,base为n,这个数就是n进制的值,所以我们在获取值之后如果要用到10进制的值,就需要做个进制转换)。
不合法部分给endstr,也可以不用给,这个时候只需将endstr传NULL即可,base的范围是2-36。
举例说明:如果base = 2 合法部分只能是0和1,
            如果base = 8合法部分只能是0-7,如果base = 10合法部分只能是0-9,
            如果base = 16合法部分只能是0-F(大小写都可以)
            如果base = 36合法部分只能是0-10,a-z(A-Z)。

举例:

int main()
{
	const char* a= "100!";
	int b= strtol(a, NULL, 10);//将字符串"100"转换为10进制100
	printf("%d\n", b);         //打印b的值等于100
	return 0;
}

  • 17
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值