免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: jazy
打印 上一主题 下一主题

[函数] 关于使用strtok函数在一次循环中同时从多个串中取出字段的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-02-28 15:42 |显示全部楼层 |倒序浏览
关于使用strtok函数在一次循环中同时从多个串中取出字段的问题:

部分代码如下:

  1.   char seps_time[1]   = "|";
  2.    char seps_money[1]  = "|";
  3.    char seps_card[1]   = "|";
  4.    char seps_result[1] = "|";
  5.                
  6.    char *token_time;
  7.    char *token_money;
  8.    char *token_card;
  9.    char *token_result;     

  10.    token_time   = strtok( v_FullTime, seps_time );
  11.    token_money  = strtok( v_FullMoney, seps_money );
  12.    token_card   = strtok( v_OutCardnumber, seps_card );
  13.    token_result = strtok( v_Result, seps_result );      
  14.    while( token_time != NULL &&token_money != NULL && token_card != NULL &&token_result != NULL)
  15.    {
  16.       userlog( " time :%s money :%s card :%s result :%s\n", token_time,token_money ,token_card,token_result);
  17.       /* Get next token: */
  18.       token_time   = strtok( NULL, seps_time );
  19.       token_money  = strtok( NULL, seps_money );
  20.       token_card   = strtok( NULL, seps_card );
  21.       token_result = strtok( NULL, seps_result );                  
  22.    }
复制代码


各串的内容为:
    v_FullMoney is      |200.00|500.00|50.00 |1.00  |1.00  |100.00|1.00
    v_OutCardnumber is  |020330235786|020539839303|201137003938|201632434262|201686070898|757269357692|757623964302
    v_ServiceType is    |009|009|009|009|009|009|009
    v_Result is         |0|0|0|0|0|0|0

打印的结果为:
    time :  money :  card :  result :
    time :0 money :0 card :0 result :0

编译环境:
    hpux
    cc


   其中 v_FullMoney,v_FullMoney,v_OutCardnumber,v_Result均为不定长字符串,其中各字段用符号'|'分隔,我想通过一个循环将各串的字段按顺序逐一取出进行重新拼串!但上述的做法却实现不了,只是将result 取出来了,好像各指针不能同时偏移.由于各串字段为不定长,所以不好使用静态数组进行保留,另外编译环境也不支持stl库,不知有没有什么别的好办法?

论坛徽章:
0
2 [报告]
发表于 2003-02-28 17:11 |显示全部楼层

关于使用strtok函数在一次循环中同时从多个串中取出字段的问题

会不会是两个串的操作如果在一个循环中处理会互相干扰?

论坛徽章:
0
3 [报告]
发表于 2003-02-28 17:21 |显示全部楼层

关于使用strtok函数在一次循环中同时从多个串中取出字段的问题

但是实际上我并上面的代码并没有陷入死循环阿!

那有什么更好的办法进行处理呢?

论坛徽章:
0
4 [报告]
发表于 2003-02-28 17:40 |显示全部楼层

关于使用strtok函数在一次循环中同时从多个串中取出字段的问题

我找了很多的资料!

当然我单独只取一个串的各字段当然没问题,但我想不借用其他数据结构直接使用strtok同时将多个不同的串中的字段取出并进行重新组合以返回给客户端。但似乎这样不行!可能是因为这个函数strtok只能是单次操作吧,好像要占用系统的一个什么资源!

当然要达到我的目的方法可能有很多,比如使用链表结构分别保存再取出,或者使用复杂的指针操作进行处理!

但现在就是想明确为什么strtok不可以这样操作?

论坛徽章:
0
5 [报告]
发表于 2003-02-28 17:46 |显示全部楼层

关于使用strtok函数在一次循环中同时从多个串中取出字段的问题

谢谢!
正才尝试使用这个函数!

论坛徽章:
0
6 [报告]
发表于 2003-02-28 17:48 |显示全部楼层

关于使用strtok函数在一次循环中同时从多个串中取出字段的问题

除了null方式调用,还可以使用别的方式吗?不好意思, 这个函数还是第一次使用!能否多指点指点!

论坛徽章:
0
7 [报告]
发表于 2003-02-28 19:30 |显示全部楼层

关于使用strtok函数在一次循环中同时从多个串中取出字段的问题

不好意思!

我发那个贴时,没看到你的贴,我刚才编译了你的代码,但还没通过!
我正在找哪有问题!

论坛徽章:
0
8 [报告]
发表于 2003-02-28 19:48 |显示全部楼层

关于使用strtok函数在一次循环中同时从多个串中取出字段的问题

非常感谢gadfly!编译通过了,虽然有警告信息!

结果也正确!我收回刚才的不理智及过早的结论!

但是,我还是有点疑惑,这两段代码的关键不同之处就在于strtok和strtok_r两个函数的实现上!

论坛徽章:
0
9 [报告]
发表于 2003-03-01 13:38 |显示全部楼层

关于使用strtok函数在一次循环中同时从多个串中取出字段的问题

再次表示感谢!
虽之前存在这种疑问,经你的解释就完全明白了!
看来得多看看这方面的资料了!!

论坛徽章:
0
10 [报告]
发表于 2003-03-01 13:41 |显示全部楼层

关于使用strtok函数在一次循环中同时从多个串中取出字段的问题

不过我到是觉得象诸如strtok这样的字符处理函数按理在设计时是没必要使用全局或静态变量来保存的!可能当初的设计者设计这个函数的目的是用于处理一些特殊的串!而后来却使用的更为广泛了,也就需要扩展了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP