【发布时间】:2017-03-07 15:32:42
【问题描述】:
我非常想将浮点值打印到条目小部件。 原则上,我想在入口小部件处给出比例小部件设置的值。 我将此功能打包到一个回调函数中,当缩放小部件的值更改时调用该回调函数。
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),而不是正确的值。我很确定在将浮点值转换为 gtk_entry_set_text 函数所需的 char 指针时会发生错误,但我不知道该怎么做。 欢迎提出任何建议(:
已解决: 感谢“一些程序员老兄”对 snprintf 的提示,它只需将缓冲区传递给 gtk_entry_set_text();
【问题讨论】:
-
什么是
para->value?是单个字符吗?也许您想要一个 string(即char的 array)而不是单个字符? (当然使用snprintf将“打印”到字符串中) -
para 是一个结构,它保存指向条目和缩放小部件的指针以及一个浮点变量(值)。我想要的只是在条目小部件上给出一个浮点值
-
编译器没有警告您将浮点值分配给
char变量?这应该给你first提示有问题。第二个问题是字符串是以零结尾的字符数组,而您的变量text不是。 -
没有警告编译的程序,但是当我更改比例小部件的值时,在入口小部件上会打印一些随机符号
-
text=para->value; printf("%c\n",text);-->printf("%e\n",para->value);
标签: c pointers callback gtk type-conversion