CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
【经验总结】不能实施并行处理的情况 浅谈并行编程中的任务分解模式
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

strtok函数的用法问题

楼主bruninfo(潜水的大鳄)2002-10-16 10:54:58 在 C/C++ / C语言 提问

void   process()  
  {  
  char   str1[81]="a,b,c,d*e";  
  char   str2[81]=",*";  
  char   *tok;  
  tok=strtok(str1,str2);  
  while(tok!=NULL){  
  cout<<tok<<'\n';  
  tok=strtok(NULL,str2);     //为什么第一个参数为NULL  
  }  
  return;  
  } 问题点数:50、回复次数:7Top

1 楼werner(werner)回复于 2002-10-16 11:54:27 得分 10

Each   call   to   strtok   modifies   strToken   by   inserting   a   null   character   after   the   token   returned   by   that   call.   To   read   the   next   token   from   strToken,   call   strtok   with   a   NULL   value   for   the   strToken   argument.   The   NULL   strToken   argument   causes   strtok   to   search   for   the   next   token   in   the   modified   strToken  
   
  人家就这么写的函数,只有照着用了Top

2 楼bruninfo(潜水的大鳄)回复于 2002-10-16 12:05:27 得分 0

是不是分配了静态值???  
  如下会发生什么???  
  void   process()  
  {  
  char   str1[81]=",*";  
  char   str2[81]="a,b,c,d*e";  
  char   str3[81]="x,y,z";  
  char   *tok;  
  tok=strtok(str2,str1);                       //第一次用  
  tok=strtok(str3,str1);                       //第二次用  
  while(tok!=NULL){  
  cout<<tok<<'\n';  
  tok=strtok(NULL,str2);     //会发生什么??  
  }  
  return;  
  }  
  Top

3 楼zhanghk(lion)回复于 2002-10-16 12:20:37 得分 10

是因为它将你找到的字符串的下一个字符改成了"\0",当你找到a时,你的源字符串str1已经变成了"a\0b,c,d*e",你可以加一句cout<<str1<<'\n'看一下.Top

4 楼bruninfo(潜水的大鳄)回复于 2002-10-16 12:47:02 得分 0

to:   zhanghk(lion)    
  的确象你所说,strtok是将分隔符改为'\0',但指向当前位置的指针在什么地方?Top

5 楼bruninfo(潜水的大鳄)回复于 2002-10-16 12:50:44 得分 0

接上文  
  这位置绝不是一个NULL所能说明的,问题就在这儿Top

6 楼pi1ot(-=\Pilot/=-)回复于 2002-10-16 12:58:51 得分 20

strtok()自己有一个ststic变量来保存信息,正因为如此所以最好用可重入的strtok_r().  
   
  Top

7 楼werner(werner)回复于 2002-10-16 13:57:33 得分 10

这个东西好象说不清楚,没有原码,我debug了一下,就好象是VC   里面this指针的用法一样,指向当前位置用NULL.Top

相关问题

  • 函数用法?
  • 在线给分,请详细分析strtok()函数的用法??
  • SQLConfigDataSource函数用法。
  • AnimateWindow函数用法
  • +=======TransparentBlt函数的用法??========
  • 替换函数的用法?
  • split函数用法请教
  • API函数GetProfileString的用法
  • SetJob函数的用法
  • Oracle to_date()函数的用法?

关键词

  • strtok
  • tok
  • str
  • char

得分解答快速导航

  • 帖主:bruninfo
  • werner
  • zhanghk
  • pi1ot
  • werner

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
惹火投票。。火热进行中...
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
CSDN网站24小时值班电话:13552009689
Copyright © 2000-2009, CSDN.NET, All Rights Reserved
GongshangLogo