页面加载中,请稍候
来源:嵌入式杂牌军发布时间:2023-05-24967浏览
询问 AI扫描二维码
获取更多精彩
嵌入式杂牌军
![]()
编辑|追梦星空
公众号|嵌入式杂牌军
有时环境会局限人的意识,但无意识中的自我良好归根结底还是格局不够大、心不够敞亮,在事情推进的过程中,回避本身更多的不是一种完备的解决方式,而是一种不负责、放任的态度。
有时你拒绝的不是事情本身,而是生的过程。
文 章 导 读
今天给小伙伴们带来一套实用的代码,可以将用逗号等字符间隔的字符串转换为数值,这个功能还是有一定的应用价值的,需要的小伙伴可以取用哈!
阅读过程中有什么问题可以后台交流哈,
!
1)主要函数介绍
主要函数如下:
①求m的n次方,拼接数值时用到10的n次方。
② 找到逗号的位置函数。
③ 字符转数值函数。
2)函数功能说明
代码只是实现了将字符转数值,将转换结果打印,小伙伴们在实际使用时可以根据自己需要进行改造。
代码可以指定保留小数点的位数,Str2Num函数中参数dx并没有起到多大效用。
1)实例代码
说明都在代码注释中了,
。
#include<stdio.h>
#include<stdlib.h>
#include<stdint.h>
#include<string.h>
/*求m的n次方*/
uint32_tPow(uint8_tm,uint8_tn)
{
uint32_tresult=1;
while(n--)
{
result*=m;
}
returnresult;
}
/*buf中获得第comma个都号的位置*/
uint8_tComma_Pos(uint8_t*buf,uint8_tcomma)
{
uint8_t*p=buf;
while(comma)
{
//遇到'*'或者非法字符,则不存在第cx个逗号
if(*buf=='*'||*buf<''||*buf>'z')
{
return0xFF;
}
if(*buf==',') //找到逗号调整逗号数量
{
comma--;
}
buf++;
}
returnbuf-p; //移动了多少次,就是逗号的位置数
}
/*将字符串转为数值*/
uint32_tStr2Num(uint8_t*buf,uint8_t*dx)
{
uint8_t*p=buf;
uint32_tires=0,fres=0;
uint8_tilen=0,flen=0,i; //ilen为整数部分长度,flen为小数部分长度
uint8_tmask=0;
intres;
//得到整数和小数的长度
while(1)
{
if(*p=='-')//是负数
{
mask|=0x02;
p++;
}
if(*p==','||(*p=='*'))//遇到结束了,以逗号或星号为结束符
{
break;
}
if(*p=='.') //遇到小数点了
{
mask|=0x01;
p++;
}
elseif((*p>'9')||(*p<'0'))//有非法字符
{
ilen=0;
flen=0;
break;
}
if(mask&0x01)
{
flen++;//遇到小数点则flen小数长度加1
}
else
{
ilen++;//否则整数长度ilen加1
}
p++;//指向缓冲下个位置
}
if(mask&0x02)//去掉负号
{
buf++;
}
//得到整数部分数据
for(i=0;i<ilen;i++)
{
ires+=Pow(10,ilen-1-i)*(buf[i]-'0');//buf[0]为最高位数
}
if(flen>3) //最多取3位小数
{
flen=3;
}
//小数点位数
*dx=flen;
//得到小数部分数据
for(i=0;i<flen;i++)
{
fres+=Pow(10,flen-1-i)*(buf[ilen+1+i]-'0');
}
//获取完整数据=将整数部分*10的小数长度次方+小数部分
res=ires*Pow(10,flen)+fres;
if(mask&0x02)//如果是负数,给数据加上负号
{
res=-res;
}
returnres;
}
intmain(intargc,char*argv[])
{
uint8_ti;
charch[100];
uint32_ttmp[3],pos,posx;
//最多取3位小数,第一个数小数只取641
strcpy(ch,"-248.6413,148.64,28.64,22.11,");
/*将4个字符串转数值并打印*/
for(i=0;i<4;i++)
{
posx=Comma_Pos(ch,i);
tmp[i]=Str2Num(ch+posx,&pos);
printf("Thevalue%dis:%d\n",i+1,tmp[i]);
}
return0;
}
2)运行结果
![]()
今天就到这吧,希望对小伙伴有所帮助哈,喜欢的话欢迎转发、点赞、分享、在看、转载哈,
。
新闻来源:嵌入式杂牌军,文中所述为作者独立观点,不代表icspec立场。更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj。
暂无评论哦,快来评论一下吧!

2026-06-23

2026-07-10