Linux c 源码(getvalbypos根据位置和特定的字符解析所需的信息)
来源:互联网 发布:如月疑云 知乎 编辑:程序博客网 时间:2024/06/06 00:21
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报文组包和解包函数之后会具体介绍。
1 0
- Linux c 源码(getvalbypos根据位置和特定的字符解析所需的信息)
- 编写一个在屏幕指定位置输出特定字符和特定颜色的子程序
- 获取特定字符之间的字符串的位置及内容
- 比较两个文件中特定位置的字符【总结】
- mysql:substr() 取出字符串中的某个特定位置的字符
- JAVA字符串中取特定字符的位置
- C#实现读取字符串特定字符位置后面的数据
- mysql:substr() 取出字符串中的某个特定位置的字符
- 根据光标位置在字符中插入新的字符
- 机器人如何根据它所看到的找到位置
- java awt根据字符串的信息和字体获取所占有的像素
- PHP微信开发---根据用户回复的关键词和位置,返回附近的信息
- 访问特定位置的内存
- C#-根据手机号获得相应的信息
- C语言实现删除字符串中特定的字符
- C/C++中从字符串中查找特定的字符
- C语言找出字符串中的特定的字符,并输出
- 【C语言】自己编写程序实现strrchr函数,即在给定字符串中找特定的字符并返回最后出现的位置
- 小白入门,不二之选:ZLG Linux公开课——嵌入式Linux开发教程
- css样式中关于li的横向排列
- 实现滑动的七种方法
- 链表操作(1)
- css3照片墙
- Linux c 源码(getvalbypos根据位置和特定的字符解析所需的信息)
- JAVA 使用properties配置文件
- springmvc通过@ResponseBody 自动解析为json对象支持中文
- MPAndroidChart——饼图
- oc字符串的简单使用
- Caused by: java.lang.IllegalStateException: not connected to MediaScannerSer
- 回到首页及QQ客服 按钮悬浮实现
- 渲染流水线
- 【转】 cin、cin.get()、cin.getline()、getline()、gets()等函数的用法