Полученное сообщение сигнала MSG
-
13-10-2019 - |
Вопрос
Я хочу сделать программу, которая регистрирует несколько идентификаторов по разным протоколам, получает сообщения и дает ответы на разные сообщения (команды).
пример:
мне: кто
Бот: Я бот с питанием либерополита.
Код выглядит так:
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: кто.
У вас есть представление о том, почему эта вещь происходит? Что я сделал не так?
Спасибо и извините за плохой английский.
Решение
Вам нужно использовать strcmp
Функция:
if (strcmp(message, "who") == 0) {
answer="I'm a libpurple powered bot.";
} else if (strcmp(message, "hello") == 0) {
==
Проверяет, что указатели содержит тот же адрес, который не хочет.
Не связан с StackOverflow