字符串搜索u_char *

时间:2011-02-13 07:59:32

标签: c string substring

我如何在u_char *指向的字符串中查找substr,因为所有C函数都以char *作为参数?

2 个答案:

答案 0 :(得分:0)

由于u_char被定义为BSD类型套接字实现中的unsigned char的typedef(在Windows中为* nix和winsock.h中的sys / types.h),如果这是您的上下文,您可以安全地应用强制转换(char*)就在将它们传递给标准C函数之前。如果那不是你的上下文,那么你必须找到u_char的声明并确认它是unsigned char类型或等价的,只有这样才能安全地应用强制转换。

答案 1 :(得分:-1)

假设u_charunsigned char的typedef,那么通常的技巧是使用标准函数并应用强制转换。

但这非常笨拙,所以您可能会使用自动应用强制转换的宏。

#define STRSTR(haystack, needle) \
                 ((u_char *)strstr((char *)haystack, (char *)needle))

如果您的编译器支持C99,您可以编写inline函数。

static inline u_char *ustrstr(u_char *haystack, u_char *needle)
{
    return (u_char *)strstr((char *)haystack, (char *)needle);
}

或者您可能只是编写封面功能:

u_char *ustrstr(u_char *haystack, u_char *needle)
{
    return (u_char *)strstr((char *)haystack, (char *)needle);
}