C99:strrpbrk的存在(反向strpbrk)

Abe*_*ron 5 c c99

strpbrk()我几乎可以肯定C99中没有反转。但:

  1. 这是有原因的吗?我的意思是,为什么strchr()有,strrchr()strpbrk()没有strrpbrk()

  2. 如何获取另一个字符串中任意字符在一个字符串中最后一次出现的位置?

hro*_*tyr 2

  1. 在我看来,因为没有人能够跳出框框,stpcpy所以也不是 C99 的一部分:(

  2. 看一下 glibc 的stpbrk实现来获得灵感,其实并不难

    /* Find the first occurrence in S of any character in ACCEPT.  */
    char *
    strpbrk (s, accept)
         const char *s;
         const char *accept;
    {
      while (*s != '\0')
        {
          const char *a = accept;
          while (*a != '\0')
            if (*a++ == *s)
              return (char *) s;
          ++s;
        }
      return NULL;
    }
    
    Run Code Online (Sandbox Code Playgroud)