Re: why???



On Thu, 2006-09-07 at 19:35 -0700, dagang001 wrote:
#include <glib.h>

typedef struct {
    gchar * name;
    gint shoe_size;
    gint age;
} Person;


int main(int argc, char** argv) {
    Person *fred = g_new(Person, 1);
    GList *list = NULL;

    gint num,i;
    gchar *ming[]={"aaa","bbb","ccc","ddd"};


    for ( i=0 ;i<4 ;i++)
    {
        fred->name = ming[i];
        fred->shoe_size = i+10;
        fred->age=60+i;
        list = g_list_append(list, fred);
    }


    num=g_list_length (list);

    for (i=0 ;i<num;i++)
    {
        g_print("%d '%s' %d  %d \n", i,
                ((Person *)g_list_nth (list,i)->data)->name,
                ((Person *)g_list_nth (list,i)->data)->shoe_size,
                ((Person *)g_list_nth (list,i)->data)->age);
    }



    g_print("long%d \n\n", num);
    g_list_free (list);
    g_free(fred);

    return 0;
}


result:

0  'ddd' 13 63
1  'ddd' 13 63
2  'ddd' 13 63
3  'ddd' 13 63
long4

help me !!

You only allocated one Person, so each time you go through the loop
you're writing to the same storage area. You may wish to take a course
or read a book on C, or use a higher-level language; C# and Python are
well supported for writing GTK+ applications.

Ed




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]