Linux c 源码(getvalbypos根据位置和特定的字符解析所需的信息)

原创 2015年11月17日 18:20:15
char * getvalbypos( char *pack, int pos, char *cSec, char *val )
pack:传入的数据缓冲区数据
pos:需要获得的位置数据,如果是0表示得到第一个数据,1表示得到第二个数据  

cSec:其实就是一个分割字符,由用户指定,例如下面例子的 '| ' 

val:返回值,返回用户所需的数据元素,例如下面例子的0200 1101  等等 


下面是示例代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char * getvalbypos(const char *pack, int pos, char *cSec, char *val )
{
        int     num = 0;
        char    *p = NULL;
        char    *tmp = NULL;

        p = strchr( pack, cSec[0] );
        if( p == NULL )
        {
                strcpy( val, pack );
                return val;
        }

        tmp = pack;
        while( p != NULL )
        {
                num++;
                if( num > pos )       break;

                tmp = p + 1;
                p = ( char * )strchr( tmp, cSec[0] );
                if( p == NULL ) return NULL;
        }

        memcpy( val, tmp, p - tmp );

        return val;
}
int main(){
        char * str=(char *)malloc(100);
        const char *buf="0200|1101|000001|122445|20151117|1999999999|";
        int i=0;
        for(i=0;i<6;i++){
                getvalbypos( buf, i, "|", str );
                printf("%d:%s\n",i,str);
        }
        return 0;
}
输出结果:

0:0200
1:1101
2:000001
3:122445
4:20151117
5:1999999999

此函数是金融类8583报文协议中常用的解析函数,方便解析数据域。
例如:buf字符串内容 0200消息类型,1101交易代码,000001流水号,122445是时间,20151117是日期,1999999999是商户号。
当然这里只是举例说明,更复杂的8583报文组包和解包函数之后会具体介绍。

版权声明:【本文为博主原创】 【未经博主允许不得转载】

相关文章推荐

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

ISO8583包简介和源代码

 http://blog.csdn.net/xpzhang/article/details/695059

【Linux c】驱动根据用户数据,回复特定数据

driver.c #include #include #include #include #include #include #include #include #include #incl...

linux c 获取本地IP,MAC 子网掩码等信息

主要是通过socket 和 ioctl获取。   我觉得这些信息的获取可以去参考Ifconfig命令的实现原理。   另外,在已知MAC,IP地址之一,去获取另外一个的方法,可以参考ARP, ...

Linux C程序 获取内存使用率和Cpu占有率,从Top 源码中裁剪移植

/*  * =====================================================================================  *  *   ...

linux c 员工管理源码

  • 2013年12月22日 21:46
  • 626KB
  • 下载

解决oracle12c安装报“[INS-30131]执行安装程序验证所需的初始设置失败(原因:无法访问临时位置)”方法

原文地址:http://www.cnblogs.com/gishh/p/4833359.html 安装过很多次oracle,顺顺利利的,今天在新机子上安装oracle12c cl...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux c 源码(getvalbypos根据位置和特定的字符解析所需的信息)
举报原因:
原因补充:

(最多只允许输入30个字)