我正在使用GTK,在我的程序中,我正在接受用户输入,使用atof()将其从字符串转换为double以进行计算,然后将结果输出到条目中。我的问题是在使用
时void gtk_entry_set_text( GtkEntry *entry, const gchar *text );
我显然需要将第二个参数作为gchar传递(或者只是一个指向字符数组的常规指针),但我不确定如何将我的double转换回double的人类可读表示。例如,用户输入65.0。我转换字符串" 65.0"到一个双65.0,执行我的函数(比如乘以2),现在我需要将双130.0转换为" 130.0",然后将它存储到一个字符数组中以传递给gtk_entry_set_text。我怎样才能做到这一点?
为了尽可能地澄清,以下是相关代码。
/* function for calculating optimal amount of cash to bet */
static void calculateRatioOfCash()
{
const gchar *userInput;
char outputString[BUFSIZ];
/* retrieve probability of winning from input field */
userInput = gtk_entry_get_text(GTK_ENTRY(entry));
/* convert our probability in str to a double and compute betPercentage */
double betPercentage = 2*(atof(userInput)) - 100;
outputString = /* what code goes here ?? */
gtk_entry_set_text(GTK_ENTRY(outputField), outputString);
}
答案 0 :(得分:2)
答案 1 :(得分:1)
由于您已经使用了GLib,我建议您使用GLib string utility functions。在这种情况下:
char *output = g_strdup_printf ("%f", betPercentage);
这比使用sprintf()更容易,因为它为你分配了内存 - 当然这意味着当你完成它时你应该g_free (output)
。