中易网

C语言strtok函数分割含有空值的字符串

答案:2  悬赏:40  
解决时间 2021-02-14 20:10
C语言strtok函数分割含有空值的字符串
最佳答案
如果你使用 strtok 函数, 那就没办法了.
因为strtok函数里面采用了  strspn()这个函数.
而 strspn 每次都将指针移动到第一个非 "|" 中的字符的位置.
 
附上源码:
#include 


static char *olds;

#undef strtok
char * strtok (char *s,const char *delim)
{
  char *token;

  if (s == NULL)
    s = olds;

  
  s += strspn (s, delim); //将指针移到第一个非delim中的字符的位置
  if (*s == '\0')
    {
      olds = s;
      return NULL;
    }

  
  token = s;
  s = strpbrk (token, delim);// 获取到delimz中字符在字符串s中第一次出现的位置
  if (s == NULL)
    
    olds = __rawmemchr (token, '\0');
  else
    {
      
      *s = '\0';
      olds = s + 1;
    }
  return token;
}
全部回答
char buf[20] = "abc def mmmm"; char *p = strtok(buf," "); printf("buf=%s\n",buf); printf("p_addr=%p\n",p); printf("buf_addr=%p\n",buf); 输出:buf=abc,说明切割后buf中的第一个空格变成了'\0',并且打印p和buf的地址是一样的,说明切割后字符串在内存中的地址没有改变
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
小a调笛子和小降b调笛子可以用筒音做2吹吗
吃维生素真可以长高吗?
是谁说的春天到了又到了交配的季节 是谁说的
德化龙湖车站怎么去啊,有知道地址的么
春风CF150怎么样
如何和呆板型领导相处
我QQ44级,两个太阳三个月亮,请问什么时候才
传力接头的伸缩性能怎么样?它与伸缩接头有何
选择在线客服系统,怎么快速知道好不好?
金川集团新闻中心我想知道这个在什么地方
客厅瓷砖和木地板的搭配问题?
黄飞鸿之英雄有梦故事是真实的吗
绝味鸭脖步行街店在哪里啊,我有事要去这个地
长垣县桂陵大道与人民路口哪一条路
东港市农业机械有限公司地址在什么地方,想过
推荐资讯
男人畏寒肢冷怎么办
汽车租赁公司所谓的保险都包括哪些内容?
笔记本外接键盘个别按键失灵,按不出来。
照明电路跳闸整个房子都没电了
东北烧烤地址在哪,我要去那里办事
皇家飞利浦手表的价格
轩香阁这个地址在什么地方,我要处理点事
昌平区半截塔村天泰剧院离南锣鼓巷远吗
余额宝里有200,我点提现200为什么告诉我额度
大慈殿地址有知道的么?有点事想过去
吃芋头是不是会消化不良
福满堂怎么去啊,有知道地址的么
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?