• 大小: 3KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-07
  • 语言: C/C++
  • 标签: 分隔符  报文  解析  

资源简介

用C语言实现 分隔符报文的解析,例如|1|2|3| 1|2|3 |1|2|3 1|2|3| 这几种模式都可以成功解析出各个域

资源截图

代码片段和文件信息

#include “public.h“

/*获得字符串中域的个数以fmt为分隔符*/
int GetRegionNumByFmt( char *sString char fmt )
{
int i  nNum = 0;
/*忽略开头和者结尾的分隔符*/
for( i=1; i {
if(sString[i] == fmt ) nNum++;
}
if( nNum != 0 ) return ++nNum;
return 0;
}

/*获得第nCount域的内容以fmt为分隔符,将获得的内容填入sStringOutput中*/
void GetCountRegionByFmt( char *sStringInput char fmt int nCount char *sStringOutput )
{
int i  nNum = 0;
char *sStart = NULL;
char *sEnd   = NULL;

/*获得第nCount-1个分隔符的位置开头和结尾的忽略*/
for( i=1; i {
if(sStringInput[i] == fmt ) nNum++;

if( nCount == 1 )
{
if( sStringInput[0] == fmt ) sStart = &(sStringInput[1]);
else sStart = &(sStringInput[0]);
break;
}

if( nNum == nCount-1) 
{
sStart = &(sStringInput[i]);
sStart++;
break;
}
}

sEnd = strchr( sStart fmt );

if( sEnd == NULL )
{
strcpy( sStringOutput sStart );
return;
}

memcpy( sStringOutput sStart sEnd-sStart);

}

/*获得字符串中的以fmt为分隔符的第nCount个域返回域的总数*/
int GetRegionByFmt( char *sStringInput char fmt int nCount char *sStringOutput )
{
int nTotalRegion = 0;
char *sStart = NULL;
char *sEnd   = NULL;

if( sStringInput == NULL ) return -1;

/*获得字符串中子域的总个数*/
nTotalRegion = GetRegionNumByFmt(sSt

评论

共有 条评论