Строка, ищущая u_char * - PullRequest
       7

Строка, ищущая u_char *

1 голос
/ 13 февраля 2011

Как мне искать подстроку в строке, на которую указывает u_char *, поскольку все функции C принимают символ * в качестве аргумента?

Ответы [ 2 ]

0 голосов
/ 13 февраля 2011

Поскольку u_char определяется как typedef для unsigned char в реализациях сокетов типа BSD (sys / types.h в * nix и winsock.h в Windows), и если это ваш контекст, вы можете безопасно применить приведение(char*) непосредственно перед передачей их стандартным функциям C.Если это не ваш контекст, то вы должны найти объявление u_char и подтвердить, что оно имеет тип unsigned char или эквивалентный, и только тогда можно безопасно применять приведение.

0 голосов
/ 13 февраля 2011

Если предположить, что u_char является typedef для unsigned char, то обычная уловка - использовать стандартные функции и применять приведение.

Это очень неловко, поэтому вы можете вместо этого использовать макросы, которыеприменяйте приведение автоматически.

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

Или вы можете написать inline функции, если ваш компилятор поддерживает C99.

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...