项目场景:开发板A的通过网络(socket)获取开发板B的温度传感器读取的温湿度
问题描述
开发板A获取到开发板B发送过来的数据是一串字符串,例如:H55.6° T62.3%,但后续需要用到具体的温湿度数值,所以要先将字符串解析出来,存储到数组中
解决方案:利用C语言写一个字符串中检索数字的简单算法
Demo
#include <stdio.h>
void main()
{
char buf[1000] ;
puts("输入字符串,检索其中的数字\n");
gets(buf);
int number[128];
int number_count = 0; //存储数字的下标
int r = 0; //操作数组移动的下标
int p = 0; //找数字的尾部
while (1)
{
while (buf[r]&&(buf[r]<'0'||buf[r]>'9')) //遇到非数组跳过
{
r++;
}
if(buf[r]){ //当遇到数字
p = r+1; //定位目前数字的下一个数据
number[number_count] = buf[r]-'0'; //将数字存到数组中
while (buf[p]>'0'&&buf[p]<='9') //如果下一个数据还是数字
{
number[number_count] = number[number_count] *10+(buf[p] - '0');
//原来数据*10+当前数
p++; //继续往后搜索数据
}
r = p; //将数组下标往后移
number_count++; //数字存进number
}else
break;
}
printf("数字的个数为:%d\n",number_count);
for (int i = 0; i < number_count; i++)
{
printf("%d\n",number[i]);
}
}
解决问题
最后将demo移植到QT项目中,解决问题
Qt操作页面获取来自另一块开发板的信息,然后将QByteArray类型的数据转换为指针形式,最后将获得到的温湿度数据显示在Qt操作页面的上,得到实时的温湿度