Das Einlesen von gtk_entry_get_text(GTK_ENTRY(widget) in einen char

sunmania

Mitglied
hallo,

ich möchte von eine GTK Entry in eine char einlesen. Bisher habe ich folgendes benutzt:

Code:
char id[20];
strncpy(id,gtk_entry_get_text(GTK_ENTRY(widget)),20);

Es ist immer compilierbar. Manchmal funktioniert es dann, manchmal wird einfach nicht in das char id eingelesen und machmal gibt es auch einen speicherzugriffsfehler.

Woran liegt das?

danke im voaus

gruß
 
Hallo,
hallo,

ich möchte von eine GTK Entry in eine char einlesen. Bisher habe ich folgendes benutzt:

Code:
char id[20];
strncpy(id,gtk_entry_get_text(GTK_ENTRY(widget)),20);

Es ist immer compilierbar. Manchmal funktioniert es dann, manchmal wird einfach nicht in das char id eingelesen und machmal gibt es auch einen speicherzugriffsfehler.

Woran liegt das?

danke im voaus

gruß

das ist schwer zu sagen, aber möglicherweise ist dein String länger als 19 Zeichen und es kracht irgendwo danach da strncpy kein \0 automatisch anfügt.
Probiers mal so:
C:
char id[20];
strncpy(id,gtk_entry_get_text(GTK_ENTRY(widget)),19);
id[19] = '\0';
Noch besser ist allerdings folgendes:
C:
gchar *id;
id = g_strdup (gtk_entry_get_text (GTK_ENTRY (widget)));
/* mach hier was mit id */
/* und dann id wieder freigeben */
g_free (id);

Siehe auch:
http://library.gnome.org/devel/glib/2.15/glib-String-Utility-Functions.html#g-strdup
http://library.gnome.org/devel/glib/unstable/glib-Memory-Allocation.html#g-free

Gruß,
RedWing
 
Zurück