полученное сообщение - PullRequest
       44

полученное сообщение

0 голосов
/ 29 декабря 2010

Я хочу создать программу, которая регистрирует несколько идентификаторов по разным протоколам, получает сообщения и дает ответы на разные сообщения (команды).

пример:

я: кто
бот: Я бот, работающий на libpurple.

Код выглядит так:

static void received_im_msg(PurpleAccount *account, char *sender, char *message,
                              PurpleConversation *conv, PurpleMessageFlags flags)
{
    if (conv==NULL) {
        conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, sender);
    }

    printf("%s: %s\n", sender, message);

    char *answer;

    if (message == "who") {
        answer="I'm a libpurple powered bot.";
    } else if (message=="hello") {
        answer="Hello, my firend!";
    } else {
        answer="Unknown command.";
    }
    //print the answer, so we can see it in terminal:
    printf("bot: %s\n",message);  

    //send the message:
    purple_conv_im_send(purple_conversation_get_im_data(conv),answer);
}

Для меня этот код выглядит нормально, но работает не так, как ожидалось. На любое сообщение, полученное ботом, ответом всегда будет Неизвестная команда. . Я не могу понять, почему

message == "who"

неверно, даже если

printf("%s: %s\n", sender, message);

печатает что-то вроде:
example_id_345: who .

Ты хоть представляешь, почему это происходит? Что я не так сделал?

Спасибо и извините за мой плохой английский.

1 Ответ

2 голосов
/ 29 декабря 2010

Вам необходимо использовать функцию strcmp:

if (strcmp(message, "who") == 0) {
    answer="I'm a libpurple powered bot.";
} else if (strcmp(message, "hello") == 0) {

== проверяет, что указатели содержат один и тот же адрес, а это не то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...