AIX中的strrspn和strfind函数(Solaris中的libgen函数)的替代方法?

时间:2015-06-09 09:40:52

标签: c gcc aix

对于AIX中的gcc编译器,我们是否有替代strrspn和strfind函数(Solaris中的libgen函数)?

功能如下所述 -

  

int strfind(const char *s1, const char *s2);
- 如果strfind()函数是字符串s1的子字符串,则strfind()函数返回第一个第二个字符串s2的偏移量。如果第二个字符串不是第一个字符串的子字符串,则strfind()返回-1。

     

char *strrspn(const char *string, const char *cset);
- strrspn()函数修剪字符串中的图表。它从字符串的末尾搜索cset中未包含的第一个字符。如果找到这样的字符,strrspn()返回指向下一个字符的指针;否则,它返回一个指向字符串的指针。

请帮帮忙吗?

1 个答案:

答案 0 :(得分:1)

我所知道的并不完全像strfind。但您可以使用strstr实现它:

int
strfind (const char *haystack, const char *needle)
{
  const char *res = strstr(haystack, needle);
  // if not found, return -1
  if (res == NULL)
    return -1;
  // else return the offset in haystack
  return res - haystack;
}

strrspn可能有点棘手,但你可以沿着这些方向做点什么:

char*
strrspn (const char *string, const char *cset)
{
  size_t len = strlen(strign);
  const char *p = string + len;

  // start from the back, and look for a char not in cset
  while (--p >= string)
    if (NULL == strchr(cset, *p))
      return p;

  return string
}
不用说,这些功能完全未经测试,可能无法正常工作,但他们应该给你一个想法。