LINUX.ORG.RU

GTK: совсем запутался с gchar, gint, char, int


0

0

Я тут совсем запутался с gchar, char, gint и int, но суть вопроса следующая: как переводить данные из gchar в char и наоборот, а так же можно ли вытворять всякие операции сложения, вычитания, пр. между gint и int?
Ниже  несколько примеров, где я недогоняю, что делать:

1)Поидее следующей код должен выделить переменной gc размер, равные длине текста edit1, правильный у мя вышел код или нет, Если нет, то как сделать правильно?
gchar gc;
int len;
len=sizeof gtk_entry_get_text(GTK_ENTRY(edit1));
gc=malloc(len);

2)Мне нужен аналог itoa, но я его не нашел, а нашел токо g_strtod, и написал так, но может ето и рабоать не будет, вообщем как переводить gchar в gint?
gint gi
gi=(gint)g_strtod(gtk_entry_get_text(GTK_ENTRY(edit2)),NULL);

3)см. (1) - я запихал в gc текст из edit1, т.е. в gc содержиться хост, теперь мне надо запихать в hostent *host ipшник хоста, напомню, что gc - gchar - правильный ли код ниже?
struct hostent *host;
if((host=gethostbyname(gc))==NULL){

4)Ну и последнее, добавляю содержимое gcharовской переменной в charовскую, я сделал ето так (см. ниже), но как сделать ето правильно?
gchar *gc;
char c[LEN]
strcat(c,gc);
anonymous

если судить по примерам 1) и 4) то на самом деле нужно делать так:

gchar *gc; gc = g_strdup (gtk_entry_get_text (GTK_ENTY(entry)));

в 2) может быть более подходящим будет g_ascii_strtoll ()

gint a; a = g_ascii_strtoull (gc, NULL, 0);

3) Вроде правильно

struct hostent *host;

host = gethostbyname (gc) if(host==NULL) { error(); } else { ok(); }

Еще на будущее. Длину строки лучше определять так: len = strlen (gc); Использовать лучше g_malloc () gc = g_malloc (len);

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.