Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[GTK+] Konwersja z int na gchar

Ostatnio zmodyfikowano 2012-10-03 20:27
Autor Wiadomość
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?
P-65750
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.
P-65751
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ś:
C/C++
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

P-65754
Mrovqa
» 2012-09-29 20:03:21
Pomyśl nad sensem tego kodu:
C/C++
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.
P-65760
czosnek17
Temat założony przez niniejszego użytkownika
» 2012-09-30 13:08:11
Znasz wskaźniki?
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ś:
C/C++
const gchar konw = sss->wynikgrt + '0';
const gchar * wsk = & konw; // wskaźniki gchar !?
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?
P-65798
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 :)
P-65802
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.
P-65805
Mrovqa
» 2012-09-30 14:03:10
Eh... Wytłumaczę, w czym problem.
C/C++
char * tekst = "abcasg";
Mamy wskaźnik na tekst, który jest zakończony terminatorem (znakiem NULL).
C/C++
char znak = '0' + 3; // '3' - POJEDYNCZY ZNAK, A NIE CIAG ZNAKOW!
char * znak2 =& znak; // wskazuje na: "3(...)"
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).
P-65810
« 1 » 2 3
  Strona 1 z 3 Następna strona