[+] libgadu - otrzymywanie wiadomo

Potrzebujesz pomocy z C, C++, perl, python, itp.
IgiKoval
Posty: 81
Rejestracja: 24 kwietnia 2009, 12:41

[+] libgadu - otrzymywanie wiadomości w formie tekstowej

Post autor: IgiKoval »

Witam. Ostatnio próbuję zrobić prosty program wykonujący w powłoce to, co dostanie ode mnie z gg. Mam coś takiego.

Kod: Zaznacz cały

if (event->type == GG_EVENT_MSG) {
      std::wcout<<L"Wiadomosc od: "<<(event->event.msg.sender)<<L"\n";
		std::wcout<<(event->event.msg.message)<<L"\n";
      }
Jednak, kiedy wysyłam wiadomość, dostaję tylko coś w stylu

Kod: Zaznacz cały

Wiadomość od: 4449442
0x84a59c8
Wiadomość od: 4449442
0x84a40d0
itp. Czemu tak się dzieje i co mam zrobić, żeby otrzymywać wiadomości w formie tekstowej?
Z góry dziękuję za pomoc.
killanonimx
Beginner
Posty: 113
Rejestracja: 11 września 2008, 15:48

Post autor: killanonimx »

To mi wygląda na wskaźnik.
Spróbuj przez std::cout, albo przez

Kod: Zaznacz cały

printf("%s\n", event->event.msg.message);
Jeśli nie wyświetli wiadomości przez printf, a będzie będzie naruszenie ochrony pamięci (SIGSEGV), to będę musiał przejrzeć bibliotekę.
IgiKoval
Posty: 81
Rejestracja: 24 kwietnia 2009, 12:41

Post autor: IgiKoval »

Printf, który podałeś, nie wyświetla nic.
killanonimx
Beginner
Posty: 113
Rejestracja: 11 września 2008, 15:48

Post autor: killanonimx »

A spróbuj tak:

Kod: Zaznacz cały

printf("%s\n", (char*)event->event.msg.message);
Bo widzę że event->event.msg.message to unsigned char*.
IgiKoval
Posty: 81
Rejestracja: 24 kwietnia 2009, 12:41

Post autor: IgiKoval »

Niestety dalj nic.

Edit: A jednak! Dzięki twojej podpowiedzi z (char*) udało mi się wyświetlić poprawnie tekst. Dzięki, już rozwiązane.

Edit: próbowałem wklepać to do mojego shella i niestety mam naruszenie ochrony pamięci...
Kod wygląda tak:

Kod: Zaznacz cały

strcpy(td, (char*)event->event.msg.message);
strcat(td, (char*)OUTSAVE);
system(td);
Gdzie OUTSAVE to

Kod: Zaznacz cały

#define OUTSAVE " > out"
Edit: Już sobie poradziłem. Miałem

Kod: Zaznacz cały

char* td;
ODPOWIEDZ