【问题标题】:String searching for u_char*字符串搜索 u_char*
【发布时间】:2011-02-13 07:59:32
【问题描述】:

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

【问题讨论】:

    标签: c string substring


    【解决方案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);
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-28
        • 1970-01-01
        • 2016-11-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多