Hi, you're not allocating a record anywhere, you've just declared a pointer to one and not initialised it. Also, g_strdup() will save you a little code.
John
Great tips, thanks. These code really makes things easy. I'd like also thanks Albert Pala for his help.
Can you point me some Glib's tutorial or examples?? You know... I'm a Glib beginner... reference guide is a little hard to learn.
bests regards Lucas Brasilino
#include <stdio.h> #include <string.h> #include <glib.h>
int main(int argc, char **argv) {
GList *dlist = NULL, *list = NULL; guint length,i; struct { guint index; gchar *data; } *record;
I'd do typedef struct _Record { int index; char *data; } Record;
Record *rp;
record->data = g_malloc(strlen("Lucas")+1);Lucas" g_strlcpy(record->data,"Lucas",strlen("Lucas")+1); dlist = g_list_append(dlist, record);
here do:
rp = g_new( Record, 1 );
rp->index = 0;
rp->date = g_strdup( "Lucas" );
dlist = g_list_append( dlist, rp );
record->data = g_malloc(strlen("Brasilino")+1); g_strlcpy(record->data,"Brasilino", strlen("Brasilino")+1); dlist = g_list_append(dlist, record);
same here
length = g_list_length(dlist);
g_printf("%d \n",length);
record = NULL;g_list_first(dlist) list = g_list_first(dlist); while(list) { record = list->data; g_print("%s\n",record->data); list = list->next;
And change these to:
rp = (Record *) list->data; printf( "index = %d, name = \"%s\"\n", rp->index, rp->data ); list = list->next;
You could change the loop to:
for( list = g_list_first( dlist ); list; list = list->next ) { rp = (Record *) list->data; printf( "index = %d, name = \"%s\"\n", rp->index, rp->data ); }
which is slightly easier to read
} }
================
--
[]'s Lucas Brasilino brasilino@recife.pe.gov.br http://www.recife.pe.gov.br Emprel - Empresa Municipal de Informatica (pt_BR) Municipal Computing Enterprise (en_US) Recife - Pernambuco - Brasil Fone: +55-81-34167078