Thread View: es.comp.os.linux.programacion
4 messages
4 total messages
Started by GonzaloF
Fri, 31 Mar 2006 23:22
Convertir cadena gchar
Author: GonzaloF
Date: Fri, 31 Mar 2006 23:22
Date: Fri, 31 Mar 2006 23:22
23 lines
1717 bytes
1717 bytes
Hola a todos...
Estoy por aqui desarrollando una peque�a aplicacion usando Glade/GTK+...
ahora necesito convertir una cadena *gchar que obtengo de un
GtkEntry, el codigo es mas o menos asi:
on_text_entry_activate (GtkEntry *entry,
gpointer user_data)
{
gchar *cadena = NULL; float fcad;
cadena = gtk_editable_get_chars(GTK_EDITABLE(entry),0,-1);
fcad = atof(cadena);
}
Segun puedo observar en mis debugs, cadena si tiene el valor que meto en
el Entry, pero a la hora de quererla convertir a float me la pasa como
0.0 (desde luego que pruebo con caracteres numericos).
Es correcta la funcion que quiero usar, o me recomiendan alguna otra??
Un saludo.
GonzaloF
Re: Convertir cadena gchar
Author: Santiago Calvo Ramos
Date: Sat, 01 Apr 2006 11:53
Date: Sat, 01 Apr 2006 11:53
36 lines
2393 bytes
2393 bytes
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
El Fri, 31 Mar 2006 17:22:06 -0600, GonzaloF <eugnelahc@hotmail.com> escribio:
> Hola a todos...
>
> Estoy por aqui desarrollando una peque�a aplicacion usando Glade/GTK+...
> ahora necesito convertir una cadena *gchar que obtengo de un
> GtkEntry, el codigo es mas o menos asi:
>
> on_text_entry_activate (GtkEntry *entry,
> gpointer user_data)
> {
> gchar *cadena = NULL; float fcad;
>
> cadena = gtk_editable_get_chars(GTK_EDITABLE(entry),0,-1);
> fcad = atof(cadena);
> }
>
> Segun puedo observar en mis debugs, cadena si tiene el valor que meto en
> el Entry, pero a la hora de quererla convertir a float me la pasa como
> 0.0 (desde luego que pruebo con caracteres numericos).
>
> Es correcta la funcion que quiero usar, o me recomiendan alguna otra??
>
Todo parece apuntar a que la causa es que "atof(const char *nptr)"
mientras que cadena es un puntero al tipo gchar. Vamos que gchar no es
char o const char.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
iD8DBQFELmnKItS1DsJychsRAqnvAKCoLSoy7GJgWO4vuiMiISes0c4o8ACgt+NL
vWBTQ4kf2uqNozHRkYarAKk=
=VgKk
-----END PGP SIGNATURE-----
Re: Convertir cadena gchar
Author: GonzaloF
Date: Sat, 01 Apr 2006 15:17
Date: Sat, 01 Apr 2006 15:17
42 lines
2556 bytes
2556 bytes
Santiago Calvo Ramos escribi�:
>> on_text_entry_activate (GtkEntry *entry,
>> gpointer user_data)
>> {
>> gchar *cadena = NULL; float fcad;
>>
>> cadena = gtk_editable_get_chars(GTK_EDITABLE(entry),0,-1);
>> fcad = atof(cadena);
>> }
>>
>> Segun puedo observar en mis debugs, cadena si tiene el valor que meto en
>> el Entry, pero a la hora de quererla convertir a float me la pasa como
>> 0.0 (desde luego que pruebo con caracteres numericos).
>>
>> Es correcta la funcion que quiero usar, o me recomiendan alguna otra??
>>
>
> Todo parece apuntar a que la causa es que "atof(const char *nptr)"
> mientras que cadena es un puntero al tipo gchar. Vamos que gchar no es
> char o const char.
OK, si, eso me queda claro... pero entonces de que forma puedo acceder
un dato de un widget GTK y *convertirlo a float* (o double)??
Este ejemplo que te pongo lo he tomado de:
http://www.kplug.org/glade_tutorial/glade2_tutorial/gtemp_4.html
(Un tutorial, algo antiguo, sobre Glade2.
La llamada a la funcion es:
compute_temp(GTK_WIDGET(entry), atof(fahr), F_TO_C);
Cualquier sugerencia es bienvendia... solo aclarar que el proyecto esta
codificado con C, no C++.
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.1 (GNU/Linux)
>
> iD8DBQFELmnKItS1DsJychsRAqnvAKCoLSoy7GJgWO4vuiMiISes0c4o8ACgt+NL
> vWBTQ4kf2uqNozHRkYarAKk=
> =VgKk
> -----END PGP SIGNATURE-----
Re: Convertir cadena gchar [SOLUCIONADO]
Author: GonzaloF
Date: Sun, 02 Apr 2006 00:57
Date: Sun, 02 Apr 2006 00:57
52 lines
3168 bytes
3168 bytes
Ya he solucionado el problema, realmente era una "bobada", lo comento abajo.
GonzaloF escribi�:
> Santiago Calvo Ramos escribi�:
>>> on_text_entry_activate (GtkEntry *entry,
>>> gpointer user_data)
>>> {
>>> gchar *cadena = NULL; float fcad;
>>>
>>> cadena = gtk_editable_get_chars(GTK_EDITABLE(entry),0,-1);
>>> fcad = atof(cadena);
Faltaba poner en el archivo el #include <stdlib.h> (segun lo da el man
3 atof), una vez puesto esto, todo funciona muy bien.
En fin, no se porque a la hora de compilar no me dice que la funcion
atof no esta definida en ninguna cabecera.
>>> }
>>>
>>> Segun puedo observar en mis debugs, cadena si tiene el valor que meto
>>> en el Entry, pero a la hora de quererla convertir a float me la pasa
>>> como 0.0 (desde luego que pruebo con caracteres numericos).
>>>
>>> Es correcta la funcion que quiero usar, o me recomiendan alguna otra??
>>>
>>
>> Todo parece apuntar a que la causa es que "atof(const char *nptr)"
>> mientras que cadena es un puntero al tipo gchar. Vamos que gchar no es
>> char o const char.
>
> OK, si, eso me queda claro... pero entonces de que forma puedo acceder
> un dato de un widget GTK y *convertirlo a float* (o double)??
>
> Este ejemplo que te pongo lo he tomado de:
> http://www.kplug.org/glade_tutorial/glade2_tutorial/gtemp_4.html
> (Un tutorial, algo antiguo, sobre Glade2.
>
> La llamada a la funcion es:
> compute_temp(GTK_WIDGET(entry), atof(fahr), F_TO_C);
>
> Cualquier sugerencia es bienvendia... solo aclarar que el proyecto esta
> codificado con C, no C++.
>
>
>> -----BEGIN PGP SIGNATURE-----
>> Version: GnuPG v1.4.1 (GNU/Linux)
>>
>> iD8DBQFELmnKItS1DsJychsRAqnvAKCoLSoy7GJgWO4vuiMiISes0c4o8ACgt+NL
>> vWBTQ4kf2uqNozHRkYarAKk=
>> =VgKk
>> -----END PGP SIGNATURE-----
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads