[C con Clase] Glib

Steven Davidson srd4121 en njit.edu
Mar Ene 5 17:16:55 CET 2010


Hola Vicente,

2010/1/5 vicente lozano <vicentelozano en gmail.com>

> Seguro que es eso lo que falla y no el que no reserve memoria para el
> puntero char *alreves?
>
>

No, porque la función 'g_strreverse()' retorna un puntero a la misma cadena
entrante. Lo que sí fallará es el funcionamiento esperado del programa al
intentar mostrar las dos cadenas original y al revés, ya que el puntero
'alreves' apuntará a la misma información.

Si Omar quiere mantener dos cadenas diferentes, entonces tendrá que crear
dos cadenas en memoria, una para la cadena original y otra para la
modificada. Por ejemplo,

gchar prueba[] = "Hola Mundo Glib!!";
gchar alreves[] = "Hola Mundo Glib!!";

g_strreverse( alreves );

O podemos usar 'g_stpcpy()' para copiar una cadena a otra; esto es,

 gchar prueba[] = "Hola Mundo Glib!!";
gchar alreves[sizeof prueba];  // el tamaño viene a ser 18 'gchar', si no he
contado mal

g_stpcpy( alreves, prueba );
 g_strreverse( alreves );

También se podría usar la función 'g_strdup()' para realizar la creación de
una cadena dinámica junto con su copia o duplicación. Por ejemplo,

 gchar prueba[] = "Hola Mundo Glib!!";
gchar * alreves = g_strdup( prueba );

g_strreverse( alreves );
...
g_free( alreves );  // Para liberar la memoria creada por 'g_strdup()'


Espero haber aclarado el tema.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100105/857613a4/attachment.html>


Más información sobre la lista de distribución Cconclase