我拼命尝试将浮点值打印到条目小部件。 原则上我想在入口小部件处给出由比例小部件设置的值。 我将此功能打包到一个回调函数中,当缩放小部件的值发生更改时会调用该函数。
static void scale_callback(GtkWidget *widget, para* para)
{
char text;
para->value=gtk_range_get_value(GTK_RANGE(widget));
text=para->value;
printf("%c\n",text);
gtk_entry_set_text(GTK_ENTRY(para->entry),&text);
}
para 是一个结构体,它保存指向条目小部件、缩放小部件和缩放小部件设置的值(浮点)的指针。
struct para
{
GtkWidget *scale;
GtkWidget *entry;
float value;
};
我现在的问题是,只打印了一些随机的符号(e@A),而不是正确的值。我很确定在将 float 值转换为 gtk_entry_set_text 函数所需的 char 指针时会发生错误,但我不知道该怎么做。 欢迎任何建议(:
已解决: 感谢“一些程序员花花公子”对 snprintf 的提示,它只需将缓冲区传递给 gtk_entry_set_text() 即可工作;
g_strdup_printf
代替 snprintf。使用 snprintf,您需要知道结果字符串的大小,或者需要使用过大的缓冲区来确保您拥有所有输入,或者截断文本。
g_strdup_printf
准确分配存储信息所需的内存。只需使用结果并随后使用 g_free
释放它即可。