在 g_callback GTK+ C 之后更新主循环中的变量
Update variable in main loop after g_callback GTK+ C
我想更新对 g_callback 中的指针变量所做的修改,但我不知道该怎么做,你能帮帮我吗? (我是 GTK+ 和 C 语言的新手...)
void modify_string(char *str)
{
char *new_str = "Something new";
str = new_str;
}
int main(int argv, char **argc)
{
char *str = NULL;
gtk_init(&argc, &argv);
GtkWidget *screen = gtk_window_new(GTK_WINDOW_TOPLEVEL);
init_main_window(screen);
GtkWidget *button = gtk_button_new_with_label("Open");
/* ... */
g_signal_connect(G_OBJECT(screen), "destroy", G_CALLBACK(gtk_main_quit), NULL);
g_signal_connect_swapped(G_OBJECT(button), "clicked", G_CALLBACK(modify_string), str);
printf("%s\n", str);
gtk_main();
return EXIT_SUCCESS;
}
问题是它打印的是“(null)”而不是 "Something new",请问您有什么想法可以更新我的字符串吗?
编辑:我不明白,谢谢!
您没有为 new_str 分配任何 space。并且您正在将一个局部变量分配给 str,该变量在例程完成并且范围丢失时丢失。尝试编写解决这两个问题的例程。
我想更新对 g_callback 中的指针变量所做的修改,但我不知道该怎么做,你能帮帮我吗? (我是 GTK+ 和 C 语言的新手...)
void modify_string(char *str)
{
char *new_str = "Something new";
str = new_str;
}
int main(int argv, char **argc)
{
char *str = NULL;
gtk_init(&argc, &argv);
GtkWidget *screen = gtk_window_new(GTK_WINDOW_TOPLEVEL);
init_main_window(screen);
GtkWidget *button = gtk_button_new_with_label("Open");
/* ... */
g_signal_connect(G_OBJECT(screen), "destroy", G_CALLBACK(gtk_main_quit), NULL);
g_signal_connect_swapped(G_OBJECT(button), "clicked", G_CALLBACK(modify_string), str);
printf("%s\n", str);
gtk_main();
return EXIT_SUCCESS;
}
问题是它打印的是“(null)”而不是 "Something new",请问您有什么想法可以更新我的字符串吗?
编辑:我不明白,谢谢!
您没有为 new_str 分配任何 space。并且您正在将一个局部变量分配给 str,该变量在例程完成并且范围丢失时丢失。尝试编写解决这两个问题的例程。