No to jednym z wyjść (jedynym jakie teraz mi przychodzi do głowy i jakie znalazłem jak dotąd na google) jest takie, że przed wypisaniem tej liczby zmiennoprzecinkowej konwertujesz ją do łańcucha znaków (ja bym dał w c++ string, ale w c go niestety nie ma) i w tym łańcuchu znaków zmieniasz kropkę na przecinek (z tym już nie będzie problemu) i dopiero ten łańcuch wypisujesz do pliku.
Rozwiąznie trochę toporne, ale jak narazie jedyne, które udało mi się wymyślić i wyszperać.
[+] C - zapis float/double do pliku przecinek zamiast kropki
No właśnie też tylko to mi przychodzi do głowy...
Problemy są trzy:
1. Zapisuję naraz TRZYNA¦CIE liczb zmiennoprzecinkowych- konwertowanie każdego mija się z celem
2. Program służy do rozpoznawania pieszych na sekwencjach filmu i chciałbym, żeby w miarę szybko działał (każda konwersja zabierze pare cykli procka:P)
3. To jest praca dyplomowa- wszelkie prowizorki niewskazane
Problemy są trzy:
1. Zapisuję naraz TRZYNA¦CIE liczb zmiennoprzecinkowych- konwertowanie każdego mija się z celem
2. Program służy do rozpoznawania pieszych na sekwencjach filmu i chciałbym, żeby w miarę szybko działał (każda konwersja zabierze pare cykli procka:P)
3. To jest praca dyplomowa- wszelkie prowizorki niewskazane
Z tego co jeszcze szukałem to możesz pokombinować z locale. Tylko nie mam aktualnie dokumentacji gcc, więc musiałbyś poszukać w niej jak ustawić określone locale i później zgodnie z nim wypisywać. Bo przecinek jest używany w Polsce, a Anglosasi używają do tego celu kropki, więc zmiana locale na pl powinna pomóc, ale tak jak mówię, są to tylko moje przypszczenia, bo nie robiłem tego nigdy, a w dokumentacji nie moge sprawdzić.
jest coś takiego jak biblioteka locale, w której to można zmieniać ustawienia takie jak wyświetlanie daty, waluty czy właśnie znaku znaku między częścią całkowitą a ułamkową w liczbach rzeczywistych. Plik nagłówkowy to locale.h, nie powiem ci jak i co tam zmienić, bo sam nie wiem:P, ale np. tu:
http://www.chemie.fu-berlin.de/chemnet/ ... bc_19.html
możesz o tym poczytać. aha, proponuję najpierw napisać sobie mały programik, sprawdzający twoje aktualne ustawienia locale. Może w systemie masz jakieś śmieszne ustawienia czegoś, albo w kompilatorze?
http://www.chemie.fu-berlin.de/chemnet/ ... bc_19.html
możesz o tym poczytać. aha, proponuję najpierw napisać sobie mały programik, sprawdzający twoje aktualne ustawienia locale. Może w systemie masz jakieś śmieszne ustawienia czegoś, albo w kompilatorze?
Raczej nie ma nic śmiesznego, bo to jest naturalne, że c chce mieć float z kropką, a nie z przecinkiem. Tutaj będzie kwestia (wg mnie) zmiany locale na np. amerykańskie w programie i później wypisanie/wczytanie tej liczby. Pytanie tylko czy taka operacja jest dozwolona.ajur pisze:Może w systemie masz jakieś śmieszne ustawienia czegoś, albo w kompilatorze?
Dostałem odpowiedź na LQ. Rozwiązaniem może być np ustawienie:
Sprawdziłem i działa. Dopisałem to do /etc/bash.bashrc.
Możliwe, że coś zamieszałem przy lokalizacji systemu.
THX! :-)
Kod: Zaznacz cały
export LC_LOCALE=C
Możliwe, że coś zamieszałem przy lokalizacji systemu.
THX! :-)
-
- Beginner
- Posty: 207
- Rejestracja: 26 czerwca 2006, 01:49
- Lokalizacja: Kraków za firewallem