Re: Compile warning (newbie)
- From: Michael L Torrie <torriem chem byu edu>
- To: "William D. Tallman" <wtallman olypen com>
- Cc: gtk-list gnome org
- Subject: Re: Compile warning (newbie)
- Date: Tue, 17 Apr 2007 11:28:50 -0600
On Mon, 2007-04-16 at 23:09 -0700, William D. Tallman wrote:
> Then it should be like this?
>
> void edit_changed (GtkWidget *widget, gpointer *data)
> {
> const gchar *str;
> gchar *strcopy;
>
> str = gtk_entry_get_text (GTK_ENTRY (widget));
>
> strcopy = g_strdup(str);
>
> g_print ("Entry changed to %s\n", strcopy);
>
> free(strcopy);
> }
>
In your case, you don't need to strdup since you're not modifying the
string. You only need to strdup if you need to manipulate a copy of the
string in some way. For example,
strcopy=g_strdup(gtk_entry_get_text( GTK_ENTRY( widget )));
g_strcat(strcopy," random text added for my purposes");
//do something with strcopy
g_free(strcopy);
> I'm no whiz with C itself and have never used strdup. IIUC, the
> template is as above, replacing the g_print with whatever is to be done
> with the copied string. Is that correct? If not, what don't I
> understand here?
I use strdup all the time, for the specific cases where I need to
manipulate a string that is being returned to me from a function. See I
don't own the memory that I'm being given a pointer to. Thus I can't
modify that memory directly (say to make it all lowercase or append text
to it). I have to make my own copy.
Note that many of the glib string utility functions already have a
built-in strdup. For example, g_ascii_tolower() returns a duplicated
string that is all lowercase, which you will have to free later.
Generally speaking, if a function returns a const char * (or gchar),
that means you are getting a pointer to a string buffer that you should
not modify. If you need to modify that string buffer, make a copy of it
first.
Michael
>
> Thanks,
>
> Bill Tallman
>
> _______________________________________________
> gtk-list mailing list
> gtk-list gnome org
> http://mail.gnome.org/mailman/listinfo/gtk-list
>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]