czosnek17 Temat założony przez niniejszego użytkownika |
[GTK+] Konwersja z int na gchar » 2012-09-29 18:17:25 Piszę dalej mój program i potrzebuję wypisywać liczby. Więc konwertuje z int na gchar, ale nie działa: const gchar * konw = sss->wynikgrt + '0'; Daje: invalid conversion from 'int' to 'const gchar*' Było to możliwe do przewidzenie, bo nie konwertuję na char tylko gchar - jak przekonwertować int na gchar? |
|
pekfos |
» 2012-09-29 18:20:18 Było to możliwe do przewidzenie, bo nie konwertuję na char tylko gchar - jak przekonwertować int na gchar? |
invalid conversion from 'int' to 'const gchar*' |
Nie konwertujesz int na gchar. Konwertujesz wartość na wskaźnik. |
|
czosnek17 Temat założony przez niniejszego użytkownika |
» 2012-09-29 19:16:04 Znowu te wskaźniki. Ok, to zrobiłem takie coś: const gchar konw = sss->wynikgrt + '0'; gtk_label_set_text( GTK_LABEL( sss->wynik ), & konw ); i pojawiają się litery z jakimiś znaczkami. W 2 linii przekazuję jak argument adres zmiennej konw. To chyba równoważne z przekazaniem zmiennej wskaźnikowej (mam nadzieję), bo gdy próbuję utworzyć wskaźnik int * wsk = & konw; To dostaje błąd: cannot convert 'const gchar*' to 'int*' in initialization |
|
Mrovqa |
» 2012-09-29 20:03:21 Pomyśl nad sensem tego kodu: const gchar konw = sss->wynikgrt + '0'; gtk_label_set_text( GTK_LABEL( sss->wynik ), & konw ); Znasz wskaźniki? Jeśli nie, to radzę je dokładnie poznać, zwłaszcza, jeżeli piszesz w bibliotece, która jest napisana w C. |
|
czosnek17 Temat założony przez niniejszego użytkownika |
» 2012-09-30 13:08:11 Ogarniam mniej więcej, jeszcze raz przeczytałem lekcję o nich. Zmieniłem typ wskaźnika na const gchar 0_o i nie wywala błędów. Więc teraz mam takie coś: const gchar konw = sss->wynikgrt + '0'; const gchar * wsk = & konw; gtk_label_set_text( GTK_LABEL( sss->wynik ), wsk );
Dalej pojawiają się pokreślone kwadraciki i litery zamiast liczb. Wypisałem wartość konw do konsoli i jest to samo. Może z konwersją jest coś źle? |
|
m4tx |
» 2012-09-30 13:40:30 Było to możliwe do przewidzenie, bo nie konwertuję na char tylko gchar - jak przekonwertować int na gchar? |
char == gchar :) |
|
czosnek17 Temat założony przez niniejszego użytkownika |
» 2012-09-30 13:52:40 No to co jest źle? Coś ze wskaźnikiem? Dalej pojawiają się pokreślone kwadraciki i litery zamiast liczb. Wypisałem wartość konw do konsoli i jest to samo. |
|
|
Mrovqa |
» 2012-09-30 14:03:10 Eh... Wytłumaczę, w czym problem. Mamy wskaźnik na tekst, który jest zakończony terminatorem (znakiem NULL). char znak = '0' + 3; char * znak2 =& znak;
Gdzie (...) to śmieci znajdujące się w pamięci za twoim pojedynczym znakiem, który utworzyłeś, a nie ciągiem znaków zakończonych nullem, którego oczekujesz. Pojmujesz? Funkcje wypisujące skaczą znak po znaku i go wypisują (aż do napotkania terminatora - nulla). |
|
« 1 » 2 3 |