我如何在u_char *指向的字符串中查找substr,因为所有C函数都以char *作为参数?
答案 0 :(得分:0)
由于u_char被定义为BSD类型套接字实现中的unsigned char的typedef(在Windows中为* nix和winsock.h中的sys / types.h),如果这是您的上下文,您可以安全地应用强制转换(char*)
就在将它们传递给标准C函数之前。如果那不是你的上下文,那么你必须找到u_char的声明并确认它是unsigned char类型或等价的,只有这样才能安全地应用强制转换。
答案 1 :(得分:-1)
假设u_char
是unsigned 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);
}