我开始使用Linux和GTK并遇到了一个奇怪的问题.我在我的代码中使用sprintf()来将float解析为char数组.
当将数字1解析为字符串时,这导致"1.000000",但奇怪的是,当我执行sprintf时调用gtk_init()后,它会产生"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;
}
Run Code Online (Sandbox Code Playgroud)
该程序的输出如下:
T:1.000000
T:1,000000
Run Code Online (Sandbox Code Playgroud)
这与您的语言环境/语言环境有关.在调用gtk_init之前,必须将LOCALE变量设置为默认值,默认情况下为C. gtk_init,将语言环境设置为桌面环境设置的任何值.
要关闭此行为,可以使用gtk_disable_setlocale.