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