获取字符串中某一个字段的数据,GetValueFromStr;拓展字符串解析parse_string
来源:互联网 发布:软件项目合同书 编辑:程序博客网 时间:2024/06/05 07:19
gps数据格式为:$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*
/***********************************************************************版权所有 (C)2015, Wuyq。**文件名称: GetValueFromStr.c*内容摘要:用于演示从gps数据字符串中获取相应的内容*其它说明:无*当前版本: V1.0*作 者: wuyq*完成日期: 20150210** 版本 修改时间 修改人 修改内容********************************************************************* V1.0 20150210 wuyq 创建**********************************************************************/#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>//字段最大长度#define MAX_RET_BUF_LEN (1024)//数据类型typedef unsigned char UINT8;typedef unsigned short int UINT16;typedef unsigned int UINT32;typedef signed int INT32;typedef unsigned char BOOL;#define TRUE (BOOL)1#define FALSE (BOOL)0/***********************************************************************功能描述:获取字符串中某一个字段的数据*输入参数: iSerialNum-字段编号(为正整数)pSourceStr-源字符串pDstStr-目的字符串(提取的数据的存放位置)cIsolater-源字符串中字段的分隔符iDstStrSize-目的字符串的长度*输出参数:无*返回值: TRUE-成功 FALSE-失败*其它说明:无*修改日期 版本号 修改人 修改内容* --------------------------------------------------------------* 20150210 V1.0 wuyq 创建***********************************************************************/BOOL GetValueFromStr(UINT16 iSerialNum, UINT8 *pSourceStr, UINT8 *pDstStr, UINT8 cIsolater, UINT32 iDstStrSize){UINT8 *pStrBegin = NULL;UINT8 *pStrEnd = NULL;UINT8 szRetBuf[MAX_RET_BUF_LEN] = { 0 }; //截取出的字符串放入该数组中UINT8 *pUINT8 = NULL;UINT16 *pUINT16 = NULL;UINT32 *pUINT32 = NULL;UINT32 iFieldLen = 0; //用于表示每个字段的实际长度if (pSourceStr == NULL) //对输入指针的异常情况进行判断{return FALSE;}//字段首pStrBegin = pSourceStr;while (--iSerialNum != 0){printf("wo zhixing le\n");pStrBegin = strchr(pStrBegin, cIsolater);if (pStrBegin == NULL){return FALSE;}pStrBegin++;}//字段尾pStrEnd = strchr(pStrBegin, cIsolater);if (pStrEnd == NULL){return FALSE;}iFieldLen = (UINT16)(pStrEnd - pStrBegin);if (iFieldLen >= MAX_RET_BUF_LEN) //进行异常保护, 防止每个字段的值过长{iFieldLen = MAX_RET_BUF_LEN - 1;}memcpy(szRetBuf, pStrBegin, iFieldLen);strncpy(pDstStr, szRetBuf, iDstStrSize);return TRUE;}/*****************************************************************功能描述: 主函数 **输入参数: 无 **输出参数: 无 **返回值 :无 **其他说明: 无 **修改日期 版本号 修改人 修改内容* -------------------------------------------------------------------------------* 20150210 V1.0 wuyq 创建****************************************************************/void main(){FILE *hFile = NULL; //文件句柄指针UINT8 szContentLine[1024] = { 0 }; //用于存放从文件中独到的每条记录UINT8 szDes[100] = { 0 };//接收分离出的数据//打开文件hFile = fopen("gpsdata.txt", "r");if (!hFile) //打开失败{printf("Open gpsdata.txt failed!\n");return -1; //异常退出}while (NULL != fgets(szContentLine, sizeof(szContentLine), hFile))//不断地读取文件{printf("szContentLine=[%s]\n", szContentLine);//打印没次读到一行的数据内容if (TRUE != GetValueFromStr(1, szContentLine, szDes, ',', sizeof(szDes))){printf("获取信息1失败.\n");return -1;}printf("szDes=[%s]\n", szDes);if (TRUE != GetValueFromStr(2, szContentLine, szDes, ',', sizeof(szDes))){printf("获取信息2失败.\n");return -1;}printf("szDes=[%s]\n", szDes);// ...}fclose(hFile);system("pause");}
字符串解析parse_string获取系统内存,cpu使用情况等。
#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdio.h>#include <string.h>#include <stdlib.h>/* 字符串解析*//*打开的文件,文件中要查找的字符串,返回数据的地址首地址*/char *parse_string(char *file, char *string){int fd;char pbuf[1024 * 10];int nread;char *ptmp;char *end;static char start[100];if (!file || !string){return NULL;}/* 打开文件*/fd = open(file, O_RDONLY);if (fd < 0){printf("open %s file error!\n", file);return NULL;}/*将文件读入缓冲区中*/nread = read(fd, pbuf, sizeof(pbuf));//将文件中的内容,存放到pbuf中if (nread < 0){printf("read %s file error!", file);return NULL;}/* 查找文件中的字符串*/ptmp = strstr(pbuf, string);ptmp += strlen(string);//跳过查找到的字符串位置while ((*ptmp == ' ') || (*ptmp == ':') || (*ptmp == '\t')){ptmp++;}//start[0] = *ptmp;//debug//printf("start:[%c]\n", *start);end = strchr(ptmp, ' ');//查找到所需的数据*end = '\0';memcpy(start, ptmp, end-ptmp);//拷贝数据,进行返回return start;}int main(){printf("MemFree:[%s]\n", parse_string("/proc/meminfo", "MemFree"));return 0;}
0 0
- 获取字符串中某一个字段的数据,GetValueFromStr;拓展字符串解析parse_string
- HTTTP协议头中,添加某一个字段,获取返回数据中头信息的某一个字段。
- 获取NSString某一个字符串出现的位置
- 计算字符串中某一个字符的个数
- 从文件中获取字段定义的数据和字符串函数
- 如何获取数据库中某一个表的所有字段
- 【iOS解决方案】获取NSString某一个字符串多次出现的位置
- 反转字符串的拓展
- 表的字段中数据如何改用其他字符串代替
- 分解字符串到字段长度固定的数据行中
- C++解析字符串中数据
- 解析字符串中的字段
- javascript 获取字符串上某一个字符
- Java 从一个文件中读取某一个特定的字符串
- SQL查询字符串中某一个字出现的次数
- 获取某一个表的所有字段
- 字符串拓展
- 获取页面上cookie数据中某一个值的函数
- linux文件截取前几行,后几行,中间几行命令
- ArcGIS API for Silverlight QueryTask 查询方法使用
- pjlib简介
- Mysql常用操作
- 使用shell脚本编写cgi
- 获取字符串中某一个字段的数据,GetValueFromStr;拓展字符串解析parse_string
- Android 5.0 Source code learning (media)
- 背爱过河
- Winfrom 窗体加载数据防止抖动的语句
- poj1149
- hibernate之QBC
- Android 编程下的计时器 和 防止按钮重复点击事件
- msvcr120.dll、msvcp120.dll注册失败
- Java、Android中的回调(callBack)我写的一个网络回调大家可以参考参考