setlocale i printf() - różnice wyświetlania w windows/linux

0

Witam, mój problem polega na tym, że program skompilowany przy pomocy mingw (uruchamiany na wine lub windows XP) wyświetla moim zdaniem niepoprawny format liczby (separator dziesiętny kropka zamiast przecinka) mimo że ten sam kod skompilowany przy pomocy gcc na Linux działa ok.

#include <stdio.h>
#include <locale.h>
int main(int argv,char *argc[])
{
setlocale(LC_ALL,"pl_PL");
double x=1.2345;
printf("%10.4f\n",x);
return(0);
}

kompiluję to tak:

#!/bin/bash
cat kompiluj.sh
echo -e"\n"
gcc printf_test.c -o printf_test
echo "wynik z linuksa  "
./printf_test
echo -e "\n"
i686-pc-mingw32-gcc printf_test.c  -Wall -lintl -o printf_test.exe
echo "wynik z wine/windows  "
wine printf_test.exe

Wynik działania programów:

wynik z linuksa
    1,2345

wynik z wine/windows
    1.2345

Czy ktoś wie co robię źle?

0

a czy ta kropka zamiast przecinka robi jakąś różnice???

0

Zmień "pl_PL" na "Polish_Poland".

0

Po zamianie "pl_PL" na "Polish_Poland" wynik jest taki:

wynik z linuksa
    1.2345


wynik z wine/windows
    1.2345

czyli dokładnie to samo jakbym usunął linijkę z "setlocale(...);"

Mi chodzi o uzyskanie polskiego wyniku formatu zapisu liczb pod dwoma systemami czyli "1,2345".

Nie wiem jak to zrobiłem, ale wygląda na to, że pisząc pierwszego posta byłem niezalogowany :-/

0

Dziwne, ale u mnie śmiga jak należy (testowane na GCC). Co do wyników z linuksa to nie ma się co dziwić, bo ta forma locale jest windows'owa (i w sumie nie ma prawa na nim nie działać).

1 użytkowników online, w tym zalogowanych: 0, gości: 1