Покажите, пожалуйста, как для функции fprintf задать форматирование так, чтобы она double писала в файл не через "," а через ".". Если в fprintf этого никак не сделать, то, может быть, как-то у cout это можно сделать?
Действительно, все дело в локали, как и сказал @Etki.
Возможно, для Вашей цели достаточно установить LC_NUMERIC
в "C", а остальные категории оставить без изменения.
Вот пример:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int
main (int ac, char *av[])
{
double d = 10.1;
char *loc = setlocale(LC_ALL, "");
printf("DEFAULT LOCALE %s\nd = %f\n", loc, d);
loc = setlocale(LC_NUMERIC, "ru_RU.utf8");
printf("%s: d = %f\n", loc, d);
loc = setlocale(LC_NUMERIC, "C");
printf("%s: d = %f\n", loc, d);
return puts("End") == EOF;
}
avp@avp-ubu1:hashcode$ gcc c.c
avp@avp-ubu1:hashcode$ ./a.out
DEFAULT LOCALE LC_CTYPE=en_US.UTF-8;LC_NUMERIC=en_SG.UTF-8;LC_TIME=en_SG.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=en_SG.UTF-8;LC_MESSAGES=en_US.UTF-8;LC_PAPER=en_SG.UTF-8;LC_NAME=en_SG.UTF-8;LC_ADDRESS=en_SG.UTF-8;LC_TELEPHONE=en_SG.UTF-8;LC_MEASUREMENT=en_SG.UTF-8;LC_IDENTIFICATION=en_SG.UTF-8
d = 10.100000
ru_RU.utf8: d = 10,100000
C: d = 10.100000
End
avp@avp-ubu1:hashcode$
Какую функцию стоит использовать, чтобы получить значение, которое не будет фиксировать время других процессов? Язык С++