我开始使用Linux和GTK,但遇到了一个奇怪的问题。 我在代码中使用sprintf()将float解析为char数组。
将数字1解析为字符串时,结果为“ 1.000000”,但是奇怪的是在调用gtk_init()之后执行sprintf时,结果为“ 1,000000”。 gtk_init()如何修改此行为,以及如何强制程序将其继续解析为“ 1.000000”。
这是我的小示例程序,它再现了该问题:
#include <gtk/gtk.h>
int main(int argc, char** argv)
{
char cMessage[12];
float fNumber = 1;
sprintf(cMessage, "T:%f", fNumber);
printf("%s\n", cMessage);
gtk_init(&argc, &argv);
sprintf(cMessage, "T:%f", fNumber);
printf("%s\n", cMessage);
return 0;
}
该程序的输出如下:
T:1.000000
T:1,000000
答案 0 :(得分:7)
这与您的语言环境/语言环境有关。在调用gtk_init之前,必须将LOCALE变量设置为默认值C。默认情况下,gtk_init会将语言环境设置为您的桌面环境设置的任何值。
要关闭此行为,可以使用gtk_disable_setlocale。