如何进行字符串解析,并打印需要的字符串
来源:互联网 发布:sql清除注册表 编辑:程序博客网 时间:2024/05/29 19:08
一、应用场景。
需要进行字符解析的场景一般是走AT指令集的,比如GPS模块,GPRS模块,WIFI模块。下面给出一个WIFI模块接收到的数据包:
+IPD,260:{"results":[{"location":{"id":"WTTE97PU94T9","name":"Wuxi","country":"CN","path":"Wuxi,Wuxi,Jiangsu,China","timezone":"Asia/Shanghai","timezone_offset":"+08:00"},"now":{"text":"Cloudy","code":"4","temperature":"36"},"last_update":"2017-08-07T1
这是wifi模块从串口输出的数据。一般情况下,我们是用单片机的串口进行接收,并把它存在数据里。
二、解析过程。
char *Weather_text_Point;char *Weather_temperature_Point;unsigned char *NET_DEVICE_GetIPD(unsigned short timeOut){char Param_out[1024]={0};#if(NET_DEVICE_TRANS == 0) unsigned int count = 0; unsigned int byte = 0; char sByte[5]={0}; char *ptrIPD; unsigned char Weather_temperature_temp;#endif do { if(NET_IO_WaitRecive() == REV_OK) { sprintf (Param_out ,"receive buf =%s\r\n", netIOInfo.buf);UsartPrintf(USART_DEBUG, Param_out); #if(NET_DEVICE_TRANS == 0) ptrIPD = strstr((char *)netIOInfo.buf, "IPD,"); if(ptrIPD == NULL) { UsartPrintf(USART_DEBUG, "\"IPD\" not found\r\n"); } else { ptrIPD = strstr(ptrIPD, "text"); ptrIPD=ptrIPD+7; while(*ptrIPD !='"') { Weather_text[count++]=*ptrIPD++ ; } Weather_text_Point=Weather_text ; sprintf (Param_out ,"Weather_text =%s\r\n", Weather_text); UsartPrintf(USART_DEBUG, Param_out); count=0; ptrIPD = strstr(ptrIPD, "temperature"); ptrIPD=ptrIPD+14; while(*ptrIPD !='"') { Weather_temperature[count++]=*ptrIPD++ ; } Weather_temperature_Point=Weather_temperature ; sprintf (Param_out ,"Weather_temperature =%s\r\n", Weather_temperature); UsartPrintf(USART_DEBUG, Param_out); //Weather_Point=Weather_temperature ;// while(*ptrIPD != ':') // {// sByte[count++] = *ptrIPD++;// }// byte = atoi(sByte); // // ptrIPD++; // for(count = 0; count < (byte+8); count++) // {// netIOInfo.buf[count] = *ptrIPD++;// } // memset(netIOInfo.buf + byte,0, sizeof(netIOInfo.buf) - byte); return netIOInfo.buf; }#else return netIOInfo.buf;#endif } } while(timeOut--); return NULL; }
三、程序说明
1、首先利用strstr(str1,str2)函数,strstr是一种函数,从字符串str1中查找是否有符串str2,如果有,从str1中的str2位置起,返回str1的指针,如果没有,返回null。
程序中利用这个函数可以迅速定位到某些关键字。进而获取关键字后的信息。
2、利用while(*ptrIPD!=‘!’)这行代码,实现把特定的字符串写入相应的数组里。
3、利用sprintf()函数,进行打印。
int sprintf( char *buffer, const char *format, [ argument] … );
说明1:该函数包含在stdio.h的头文件中,使用时需要加入:
说明2:sprintf与printf函数的区别:二者功能相似,但是sprintf函数打印到字符串中,而printf函数打印输出到屏幕上。sprintf函数在我们完成其他数据类型转换成字符串类型的操作中应用广泛。此函数的精华在于可以格式化输出。
比如,程序中解析出来一组温度数据,放在一个数组里。那么想用串口把这个数据打印出来,就需要用到这个函数。
4、aoti可以把数组里的字符串转换成实际的数字。
阅读全文
0 0
- 如何进行字符串解析,并打印需要的字符串
- 解析json字符串并进行图片位置的替换
- 如何进行字符串的拷贝?
- 求非空格字符串的长度,并打印字符串
- 找到匹配的字符串并进行排序
- 【C语言】如何实现多行字符串的输入 并 将文本打印在屏幕上?
- JAVA从控制台获取输入并进行字符串解析
- python 如何工整的打印字符串
- java直接访问链接url,并对返回的json字符串进行解析
- 如何进行字符串拷贝
- 如何将字符串按需要分割成需要的列表
- 拆分用‘,’分隔的字符串并打印出来
- 28+打印并统计字符串的全排列和组合
- C# 根据需要对字符串进行指定长度的截取
- String类型的json体转换为json(json嵌套字符串json,嵌套字符串json数组等)转换并解析为需要的json格式
- cocos2d-x 对传入的字符串进行解析分割 解析
- 指定打印的字符串
- 对JSON字符串进行解析
- 复杂clone
- 如何在Debian和Ubuntu下重新打包Deb文件
- 框架学习系列 mybatis 第八篇 mybatis开发dao的方式
- jenkins 启动参数 大全
- delete和truncate的区别
- 如何进行字符串解析,并打印需要的字符串
- java基础学习
- Intellij UML Support插件介绍 及 Android Context继承关系
- 免费馅饼||HDU1176
- 获取字符串高度或宽度
- HDU 2814 斐波那契循环节+欧拉函数降幂
- win7 64位VS2012生成MSVCP110D.dll错误,调运行库为多线程/mtd
- H.264中的SPS和PPS
- 算法类面试题解析——美团2016校招:棋子翻转