【问题标题】:Strtok realization on CC上的Strtok实现
【发布时间】:2021-12-10 09:14:17
【问题描述】:

我正在 C 上制作我自己的 Strtok 版本。

我几乎完成了,但是,我在互联网上找到了我需要的最后一部分,但我不太明白它的作用。最终我实际上得到了它的作用,但仍然不明白它为什么起作用。我缺乏理论;(

char* strtok_sad(char* str, const char* delim) {
    static char* next = 0;
    if (str) {
      next = str;
    }
    
    if (*next == 0) {
      return NULL;
    }

    char* c = next;
    while(strchr(delim,*c)) {
      ++c;
    }
    
    if (*c == 0) {
      return NULL;
    }
    
    char* word = c;
    while(strchr(delim,*c)==0) {
      ++c;
    }

    if (*c == 0) {
      next = c;
      return word;
    }

    *c = 0;
    next = c+1;
    return word;
}

谁能解释这部分,或者至少给我发一篇解释它的文章:

    *c = 0;
    next = c+1;

谢谢!

【问题讨论】:

  • @Yunnosch 再次告诉你,我明白它的作用。我缺乏理论来解释它为什么起作用
  • 为什么这个strtok 函数很悲伤?可能是因为您没有按照老师的要求写自己,而是从互联网上拿了一个。

标签: c strtok


【解决方案1】:

我将回答问题的非题外话版本/部分。

*c = 0; 设置为 0 无论c 指向什么。 next = c+1; 使 next 指向 c 后面的一位。我假设您可以发现该改写与 strtok() 规范的相似之处。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 2013-04-23
    相关资源
    最近更新 更多