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
» 2012-09-30 21:14:32
Próbowałem rozwiązać problem robiąc takie coś, teraz to nie wiem po co, myślałem, że będzie działać:
1. Konwersja int na string
2. Podział stringa na znaki
3. Przypisanie każdemu znakowi oddzielnego gchara (konwersja)  // to miało pomóc
Jest już trochę lepiej, bo pierwszy znak który się wyświetla jest ok, dalej znowu są śmieci.
Pojmujesz? Funkcje wypisujące skaczą znak po znaku i go wypisują (aż do napotkania terminatora - nulla).
Można jakoś wstawić taki terminator?
P-65868
Mrovqa
» 2012-10-01 08:00:19
Można jakoś wstawić taki terminator?
Dane "abc" w pamięci ważą 4 bajty - na końcu stringu kompilator sam dodaje terminator. Chcesz go sam wstawić? Po prostu wpisz zero do danej zmiennej:
C/C++
char a = '\0';
//a=0; tez dobrze
Co do konwersji char->int to nie wiem czy słyszałeś, ale jest w miarę wygodna funkcja atoi. (nawet opracowałem to hasło kiedyś do dokumentacji, ale widząc, że jej w ogóle nie dodano - tzn. teraz widzę, że je opracowano od nowa... - stwierdziłem, iż po prostu nie warto opracowywać tu dokumentacji).
P-65891
Badman
» 2012-10-01 09:43:52
Widzę, że masz sss->wynikgrt, czyli zmienna wynikgrt jest składową struktury. Zauważyłem, że za bardzo rozbudowujesz strukturę. Akurat nie wiem czy wynikgrt powinno być jej składoą, czy nie. Wydaje mi się, że zasugerowałeś się zbytnio jednym z moich postów, gdzie proponowałem użycia struktyry zamiast iluś tam zmiennych globalnych.
Cześć zmiennych musi być globalna - inaczej się nie da. Tutaj minąłem się z prawdą, bo można napisać program bez użycia zmiennych globalnych, lecz jego czytelność może być niska.
W skład struktury dodawaj tylko te zmienne, które są bezwzględnie potrzebne do przekazania jakiejś funkcji i w inny sposób tych zmiennych nie możesz jesz przekazać.
Pamiętaj o zmiennych lokalnych :)

No i poćwicz wskaźniki ! :) 
P-65895
czosnek17
Temat założony przez niniejszego użytkownika
» 2012-10-01 17:49:20
Źle się wyraziłem, chodziło mi o dodanie terminatora, tzn żeby gchar miał 1 znak, a po nim terminator. Spróbowałem zmienna + '\0';, nie działa.


P-65922
Mrovqa
» 2012-10-02 20:13:57
Źle się wyraziłem, chodziło mi o dodanie terminatora, tzn żeby gchar miał 1 znak, a po nim terminator.
gchar to jeden znak, a nie tablica dwóch znaków.
Spróbowałem zmienna + '\0';, nie działa.
ponieważ poniższe zapisy są równoznaczne:
C/C++
int a = 5 + 0;
int b = 5 + '\0';
'\0' to jest zwykłe zero (binarnie), ale zapisana jako stała dosłowna typu char.
P-65971
czosnek17
Temat założony przez niniejszego użytkownika
» 2012-10-02 20:19:08
gchar to jeden znak
gchar * zmienna = "cos" <- to przechowuje napis to myślałem, że można do tego coś dodać, ale to nie ważne, są jakieś inne sposoby, żeby wypisać poprawnie te liczby(już przekonwertowanie na tekst)?
P-65972
Mrovqa
» 2012-10-02 20:22:43
gchar * zmienna = "cos" <- to przechowuje napis
Nie przechowuje napisu, tylko jego adres. Radzę Ci nauczyć się porządnie wskaźników (albo chociażby ich podstaw).
P-65973
Badman
» 2012-10-03 08:10:43
Skoro korzysztasz w niejawny w sposób z GLib to skorzystaj z g_strdup_printf

C/C++
gchar * konw;

know = g_strdup_printf( "%d", sss->wynikgrt );

/* Należy zwolnić pamięć przydzieloną funkcją g_strdup_printf, kiedy string nie jest już potrzebny */
g_free( know );

 
P-65995
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona