Hola Francisco, Quoting Fran <[EMAIL PROTECTED]>:
(snip) > > Para ello he usado la función g_sprintf que permite pasar a la cadena > que quieras un texto formateado como en un g_printf. Lo malo es que > este método me provoca un fallo de segmentación, y no sé dónde está el > fallo. > > Os pongo un trozo de código de cómo lo hago para que lo entendáis bien: > > #include <glib.h> > #include <glib/gprintf.h> > #include <gtk/gtk.h> > > int main (int argc, char *argv[]) { > > GtkWidget *year_entry; > /* Declaro más variables para la interfaz gráfica */ > gchar *year; > gint ret, ret2; > > /* Inicio la interfaz gráfica */ > > /* Uso GLADE para la interfaz gráfica */ > year_entry = glade_xml_get_widget (GLADE_XML (data), "year_entry"); > > /* Recojo el valor del entero "ret" de otra función > de una librería 100% fiable */ > ret2 = g_sprintf (year, "%i", ret); > if (ret2 > 0) > gtk_entry_set_text (GTK_ENTRY (year_entry), (gchar *) year); > > /* Seguimos la ejecución y terminamos */ > } > > **** > > El programa falla al realizar la función g_sprintf y no entiendo nada, > ya que he hecho lo mismo pero con las funciones sprintf y los datos > char e int, y funciona perfectamente. Así que creo que es problema de > la glib, concretamente uso la 2.10 que está en los repositorios de > Ubuntu Dapper. El problema es que g_sprintf () espera que el gchar* que le pases sea un puntero a un buffer con la memoria necesaria ya reservada. Si deseas que glib se encargue de reservar la memoria por ti, entonces lo que necesitas es usar g_strdup_printf (). Saludos, Claudio -- Claudio Saavedra <[EMAIL PROTECTED]> ------------------------------------------------- Este correo fue enviado por http://alumnos.utalca.cl _______________________________________________ Gnome-desarrollo mailing list Gnome-desarrollo@es.gnome.org https://listas.es.gnome.org/mailman/listinfo/gnome-desarrollo