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

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

пример:

я: кто
бот: я бот на базе libpurple.

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

static void receive_im_msg(PurpleAccount *account, char *sender, char *message,
                              PurpleConversation *conv, флаги PurpleMessageFlags)
{
    if (conv==NULL) {
        conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, аккаунт, отправитель);
    }

    printf("%s: %s\n", отправитель, сообщение);

    символ * ответ;

    if (message == "кто") {
        answer="Я бот, работающий на libpurple.";
    } else if (message=="hello") {
        answer="Привет, мой бранд!";
    } еще {
        answer = "Неизвестная команда.";
    }
    // напечатать ответ, чтобы мы могли видеть его в терминале:
    printf("бот: %s\n", сообщение);  

    // отправить сообщение:
    purple_conv_im_send(purple_conversation_get_im_data(ко), ответ);
}

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

 сообщение == "кто" 

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

 printf("%s: %s\n", отправитель, сообщение); 

печатает что-то вроде:
пример_ид_345: кто.

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

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

1 ответ

Решение

Вам нужно использовать strcmp функция:

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

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

Другие вопросы по тегам