我正在努力将浮点值打印到条目小部件。 原则上,我想在条目小部件中给出由小部件小部件设置的值。 我将此功能打包到一个回调函数中,该函数在更改缩放小部件的值时调用。
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-function所需的char指针时会发生错误,但我不知道该怎么做。 欢迎任何建议(:
解决: 感谢"一些程序员老兄"通过将缓冲区传递给gtk_entry_set_text();
提示snprintf它的工作原理答案 0 :(得分:0)
使用g_strdup_printf
代替snprintf。使用snprintf,您需要知道结果字符串的大小,或者需要使用过大的缓冲区,以确保您拥有所有输入,或者截断文本。
g_strdup_printf
准确分配存储信息所需的内存。只需使用结果,然后将其与g_free
一起释放。