对于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()返回指向下一个字符的指针;否则,它返回一个指向字符串的指针。
请帮帮忙吗?
答案 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
}
不用说,这些功能完全未经测试,可能无法正常工作,但他们应该给你一个想法。