GTK fprint(%e) 用逗号而不是点写的浮点数

Ark*_*don 5 c gtk floating-point printf

因此,我正在创建一个小型太阳系模拟,并使用 C 语言完成微积分。计算完成后,我将它们放入一个 json 文件中,该文件由网页读取。

我创建了一个函数将轨迹的坐标保存到json文件中,所有坐标都是双精度的。为了将 double 打印到我的 json 文件中,我使用 fprintf 和 %e (是的,我想要科学写作)。

FILE *fp = NULL;
fp = fopen("file.json", "w");    
fprintf(fp, "[[%e, %e, %e],[%e, %e, %e], %d],\n", pos.x, pos.y, pos.z, speed.x, speed.y, speed.z, time);
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我在 main.c 中使用该函数时,它会按照我想要的方式用点写入双精度数(例如:3.14),但是当我在 Gtk 中使用该函数时,它会用逗号写入它们(例如:3,14 )。

我尝试使用 GTK 的 g_fprintf 内置 fprintf 函数,但我遇到了同样的问题。知道如何解决这个问题吗?

(如果您需要有关代码或问题的更多信息,我随时为您服务)

Dav*_*eri 5

gtksetlocale更改区域设置,在调用后立即切换到默认值gtk_init

#include <locale.h>

int main(int argc, char *argv[])
{
    gtk_init(&argc, &argv);
    setlocale(LC_NUMERIC, "C");
Run Code Online (Sandbox Code Playgroud)

或者您可以在或gtk_disable_setlocale();之前从一开始就调用gtk_init()gtk_application_new()