Konwersja Double do String

0

Witam. Pisze prosty program w C. Mianowicie kalkulator. Projekt nie jest ambitny ale staram sie sprawdzic swoje mozliwosci jesli chodzi o pisanie programow dla mojego MP4 do którego niedawno dostałem SDK.

Chce przekonwertować zmienną double na string ale nie przy uzyciu banalnych komend sprintf czy takie podobne, bo one nie działaja w tym kompilatorze. Najlepiej jak by ktoś miał pełną funkcję bez nowoczesnych udziwnien których moj kompilator oczywiscie nie obsluzy.

Stringow tez mi nie obsluguje, do tego uzywam tablic char lub unsinged int

0

oj nie był bym taki do przodu. Podaj dokładnie co to za MP4 dokładnie jaki ma system/SDK. Urządzenia Embedded często porzucają całkowicie standardowe biblioteki, dlatego właśnie nie masz sprintf. To samo może być z fcvt, które jest jeszcze mniej standardowe niż sprintf.

0

MP4 to Teclast C260 (polski odpowiednik to Pentagram Vanquish R touch) oparty na chipie Rockchip 2606a. Dostarczony jest kompilator i niby komenda sprintf jest kompilowana ale probowalem jej uzyc i program sie zawiesza.

Ogolnie jest wiele ograniczen, np typ danych long long int jest niewiele wiekszy od long int. Long int konczy sie na 26 coś, kiedy long long int konczy sie na 46 cos z ta sama liczba cyfr.

0

/cygdrive/c/Users/Flash/AppData/Local/Temp/ccomlflO_Hello.obj(.text+0x81): undefined reference to `_fcvt'

dostaje taki komunikat przy próbie użycia tej funkcji. Wygląda na to że nie jest obsługiwana, i jeśli się nie mylę to jest ona dostępna tylko w c++ a nie w c.

Pomoże ktoś coś z tym zrobić?

EDIT:

OK. Udało mi się poniekąd użyć funkcji sprintf

sprintf(TxtBuff , "%f", num);

Jednak zrodził się kolejny problem. Formatowanie "%f" to jedyne jakie działa. Gdy próbuje użyć np "%.4f" to liczba w ogóle nie jest drukowana do łańcucha, zamiast tego widnieje po prostu napis ".4f". Tak jak jest u góry formatuje do 6 liczb po przecinku. Skąd się dowiedzieć jakie tryby formatowania obsługuje ten kompilator?

0
flasher86 napisał(a)

Skąd się dowiedzieć jakie tryby formatowania obsługuje ten kompilator?
Z dokumentacji. Ewentualnie ze źródeł biblioteki standardowej jeśli są dostępne.
Jeśli żadne z w.w. nie jest dostępne to zostaje ci szukać po forach internetowych lub określić to doświadczalnie.

Co do problemu, to możesz po prostu uciąć łańcuch na 5-tym znaku za kropką.

0

Pogrzebałem trochę co to za player i nadal nie wiem jaki system na nim chodzi.
Z tego co znalazłem, na płycie z Playerem masz SDK i razem z SDK MUSI być jakaś dokumentacja.
Natomiast błąd o treści "undefined reference to" najczęściej oznacza, że nie dołączyłeś jakiegoś pliku do projektu (zwykle plik *.lib biblioteki).

0

tzn na płycie nie bylo nic, bo SDK wyszło (lub wyciekło) niedawno, na dlugo po tym jak kupilem player.

Dokumentacja niby jest ale tylko po chińsku. Do kompilacji używam programu FWTools. Nie wiem bardzo jak odpowiedzieć na pytanie o system. Czy tu chodzi o ARM? ANSI C? Dopiero zaczynam przygodę z C, mam spore doświadczenie w Delphi ale to poniekąd dwa różne światy.

z tej strony dobrałem się do całego SDK
http://mympx.org/forum/general-discussion/43348-hooray-rockchip-sdk.html

co do komendy fcvt to znalazłem jej kod źródłowy ale nie bylem w stanie jej skompilować, bo jak sie doczytałem kod był do C++ a nie C i było setki błędów.

W sumie im dalej się zagłębiam tym więcej problemów. Zauważyłem ze typy danych sa dramatycznie okrojone i to w dosyć bezczelny sposób. M. in. dzielenie na zmiennych double/float nie pozostawia reszty po przecinku ale zaokrągla liczbę jak gdyby to był typ INT.

Myślę że jedyne rozwiązanie to operowanie liczbami w tablicach (jedna cyfra na jedną zmienną), ale to mi się wydaję będzie kosmiczne przedsięwzięcie, by samemu napisać funkcję choćby dzielenia czy pierwiastku.

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