2014-01-06 93 views
0

我在我的c应用程序中使用gtk,并希望在窗口中显示一个double作为标签。将字符串double翻译为字符串 - 将字符串double连接到字符串

double d = 1000.50 

label = gtk_label_new (d); 

我得到一个编译错误,因为该函数将字符串作为参数。

我习惯了Java,它很容易用一个字符串连接一个原语。它也很容易将字符串转换为双精度字符串。我已经搜索了一个解决方案,但我只能在C++中找到示例。

所以 - 一个类型转换如何将一个double转换为字符串或将一个double转换为一个字符串?

谢谢!

+0

使用sprintf或snprintf生成一个字符串。随着GLib的,你还可以使用内置的巧舌如簧版本:http://www.gtk.org/api/2.6/glib/glib-String-Utility-Functions.html#g-strdup-printf – Brandin

回答

2

snprintf可以用来做到这一点。您可以拨打snprintf用NULL指针,以评估它的大小将需要缓冲,这样你就可以分配足够的结果字符串将适合。

double d = 1000.50 
int len = snprintf(NULL, 0, "%f", d); 
char *str = malloc(len+1); 
snprintf(str, len, "%f", d); 
label = gtk_label_new (str); 
+0

它的工作原理谢谢! !可以在4分钟内接受:-) ...但我想我应该在我完成时免费* str? – user3155478

+0

我不知道,如果GTK会免费做的,或者它是如何预计指针。如果指针被复制到内存中,则必须释放它。无论如何,你应该参考gtk文档。 – Devolus