Я использую обратные вызовы фокуса для «удаления» содержимого GtkEntry, когда кто-то щелкает по нему (и возвращает его, если они оставляют его пустым, как в заголовке вопросов в стеке)
Однако, переменная очищается, когда функция заканчивается как локальная переменная.
Что я здесь не так делаю?
// A place to store the character
char * store;
// When focussed, save the contents and empty the entry
void
use_key_entry_focus_in_event(GtkWidget *widget, GdkEvent *event, gpointer user_data){
if(strcmp(gtk_entry_get_text(GTK_ENTRY(widget)), "")){
store = (char *) gtk_entry_get_text(GTK_ENTRY(widget));
}
gtk_entry_set_text(GTK_ENTRY(widget), "");
}
void
othercallback(){
printf("%s",store); // Returns nothing
}
Редактировать с помощью ответчиков Я написал это (не нужно malloc):
char store[2];
[...]
strcpy(store, (const char *) gtk_entry_get_text(GTK_ENTRY(widget)));