参考文章
参考文章
一直奇怪为什么stm32处理数据那么麻烦,要指针数组判断等等跳来跳去的。
直到今天,我发现了
#include “string.h”
#include “stdlib.h”
!!!
那我就可以两句话搞定我的数据了!!!
而不是像之前那样子那么麻烦了:STM32字符转整型处理
’
stm32c语言字符转正型,并且进行数据分割
#include "string.h"
#include "stdlib.h"
u8 DATA[200]="X12Y34Y56Y78";
int shuju_chuli(const char *shuju,char zifu )
{
char *shu_ju_1=strchr(shuju,zifu)+1; //数据
return atoi(shu_ju_1); //数值
}
int shuju_chuli1(const char *shuju,char zifu )
{
char *shu_ju_1=strchr(shuju,zifu)+1; //数据
char *shu_ju_2=strchr(shu_ju_1,zifu)+1; //数据
return atoi(shu_ju_2); //数值
}
printf("X是:%d\r\n",shuju_chuli((const char*)DATA,'X'));
printf("y是:%d\r\n",shuju_chuli((const char*)DATA,'Y'));
printf("Y1是:%d\r\n",shuju_chuli1((const char*)DATA,'Y'));
进阶版,任取第几个位置的值:
u8 DATA[200]="X12Y34Y56Y78";
int shuju_chuli_plus(const char *shuju,char zifu,int num) //数据 字符 你想要第几个的数据
{
char *shu_ju_1;
shu_ju_1=strchr(shuju,zifu); //数据
for(int cishu=0;cishu<num;cishu++){
shu_ju_1=strchr(shu_ju_1,zifu)+1; //数据
}
return atoi(shu_ju_1); //数值
}
printf("第一个Y是:%d\r\n",shuju_chuli_plus((const char*)DATA,'Y',1));
printf("第二个Y是:%d\r\n",shuju_chuli_plus((const char*)DATA,'Y',2));
printf("第三个Y是:%d\r\n",shuju_chuli_plus((const char*)DATA,'Y',3));