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

Responder a