啊快脑子炸了,字符串的有关问题。

求救啊,快脑子炸了,字符串的问题。。。。
艹啊,网速能不能给力点,发这个就发了三遍了。。。

我的任务是解析一段客户机发来的字符串,这段字符串包含了一个或者多个信息段,信息段之间用分号隔开,每个信息段有下面的几个字段,字段之间用逗号隔开,怎么解析这段字符串(注意是字符串),解析成下面的结构体形式。
C/C++ code

struct recived_st
{
    unsigned char client_id[40];
    unsigned int client_ip;
    unsigned short client_port;
    unsigned int tunnel_ip;
    unsigned short tunnel_port;
    unsigned int app_ip;
    unsigned short app_port;
    long time;
    unsigned short index_port;
};



————————————————————

------解决方案--------------------
C语言的话就用strtok按照","解析字符串。
解析出字符串后再使用strcpy(), atoi(), atol()函数为结构体对象赋值。

两个帖子,就两个回复。
------解决方案--------------------
探讨

引用:

C语言的话就用strtok按照","解析字符串。
解析出字符串后再使用strcpy(), atoi(), atol()函数为结构体对象赋值。

两个帖子,就两个回复。


但是消息之间是用分号间隔的啊。

------解决方案--------------------
客户端是谁做的?
能改设计吗?
真心的,用二进制流来传输数据更好!
因为这是机器之间的交流
不牵扯到人的交流
------解决方案--------------------
那就先用strtok找";".
或者用strchr()自己查找位置。然后解析。

其实很少用字符串传数据的,都是用二进制流传,性能高很多。
如果要用字符串,还不如用json。让json来解析数据。
要不就用protobuf。
=======================================================
这样比较合理。
如果没有办法改成这样的方法。
那就递归下降的方法来解析,
每次读取一个“;”的数据,
然后再解析这段数据。
------解决方案--------------------
三步:
1、解析码流,以;为标记取出信息段;
2、解析信息段,以,为标记取出字段码流;
3、分析各字段的合法性,并翻译之后,填入结构体变量。