Istnieją dwa proste sposoby na dokonanie takiej zamiany.
Sposób pierwszy polega na wykorzystaniu funkcji sprintf.
//Dolaczenie bibliotek #include<stdio.h> //Glowna petla programu int main() { //Deklaracja zmiennych char res[20]; float n = 34545.984; //Wywolanie funkcji konwersji sprintf(res,"%f\n", n); //Wyswietlenie zmiennej printf("%s\n", res); //Zwrocenie wartosci return 0; }
//Dolaczenie bibliotek #include<stdio.h> #include<math.h> //Odwrócenie wartości o podanej dlugosc void reverse(char *str, int len) { //Deklaracja zmiennych int i=0, j=len-1, temp; while (i<j) { //Przypisanie wartosci do zmiennej temp = str[i]; //Przepisanie wartosci str[i] = str[j]; //Wpisanie przechowywanej wartosci do drugiej tablicy str[j] = temp; i++; j--; } } /* * konwertsja x na wartosc string. * zmienna d okresla ilosc cyfr jakie beda na wyjsciu. */ int intToStr(int x, char str[], int d) { //Deklaracja zmiennej i int i = 0; //Petla dzia³a dopóki x jest mniejsze od 1 while (x) { //Przypisanie do tablicy z kolejnym numerem wartoœci //x podzielonej bez reszty przez 10 oraz cyfry 0 str[i++] = (x%10) + '0'; //Podzielenie wartoœci x normalnie przez 10 x = x/10; } // Jesli jest wymagana wieksza ilosc cyfr // zostana dodane zera while (i < d) str[i++] = '0'; //Odwrocenie wartosci w funkcji reverse reverse(str, i); //Dopisanie znaku na koncu tablicy str[i] = '\0'; return i; } /* * Konwersja formatu zmiennoprzecinkowego na znakowy * Jako argumenty nalezy podac odpowiednio * liczby w formacie float, * nazwe zdefiniowanej tablicy w formacie char, * ilosc miejsc po przecinku (format int) */ void ftoa(float n, char *res, int afterpoint) { //Wyciagniecie calkowitej czesci liczby int ipart = (int)n; //wyciagniêcie czesci ulamkowej float fpart = n - (float)ipart; //konwerska liczby int na string int i = intToStr(ipart, res, 0); //Sprawdzenie czy ilosc wyswietlanych liczb po przecinku //jest wieksza od 0 if (afterpoint != 0) { //Dodadanie kropki po liczbie calkowitej res[i] = '.'; /* * Wartosc liczb po przecinku zostaje pomnozone * przez funkcję pow * Funkcja pow podnosi wartość do potegi, * Jako argumenty podstawa, oraz wartość potegi */ fpart = fpart * pow(10, afterpoint); //Zamiana wartości znajdującej się po przecinku na wartosc //znakowa z wartosci int intToStr((int)fpart, res + i + 1, afterpoint); } } //Glowna petla programu int main() { //Deklaracja zmiennych char res[10]; float n = 34545.984563; //Wywolanie funkcji konwersji ftoa(n, res, 6); //Wyswietlenie zmiennej printf("%s\n", res); //Zwrocenie wartosci return 0; }