【发布时间】:2011-05-02 16:44:45
【问题描述】:
当有人点击它时,我使用焦点回调来“删除” 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)));
【问题讨论】:
-
printf 可能正在打印到您的终端,该终端是行缓冲的。你可以试试
printf("%s\n,store);吗?