获取字符串中某一个字段的数据,GetValueFromStr

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.020150210wuyq创建**********************************************************************/#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>//字段最大长度#define MAX_RET_BUF_LEN(1024)//数据类型typedef unsigned charUINT8;typedef unsigned short int UINT16;typedef unsigned intUINT32;typedef signed intINT32;typedef unsigned charBOOL;#define TRUE(BOOL)1#define FALSE(BOOL)0/***********************************************************************功能描述:获取字符串中某一个字段的数据*输入参数: iSerialNum-字段编号(为正整数)pSourceStr-源字符串pDstStr-目的字符串(提取的数据的存放位置)cIsolater-源字符串中字段的分隔符iDstStrSize-目的字符串的长度*输出参数:无*返回值: TRUE-成功 FALSE-失败*其它说明:无*修改日期版本号修改人修改内容* ————————————————————–* 20150210V1.0wuyq创建***********************************************************************/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;}/*****************************************************************功能描述: 主函数**输入参数: 无**输出参数: 无**返回值 :无**其他说明: 无**修改日期版本号修改人修改内容* ——————————————————————————-* 20150210V1.0wuyq创建****************************************************************/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");}

,怠惰是贫穷的制造厂。

获取字符串中某一个字段的数据,GetValueFromStr

相关文章:

你感兴趣的文章:

标签云: