#include #include /* Primjer implementacije funkcije itoa, za pretvaranje cijelog broja u string. Pogledati KR2, str. 64. Ova funkcija NE radi uvijek. */ /* Pomocna funkcija za invertiranje (okretanje) stringa. */ void invertiraj (char s[]) { int i, n = strlen(s); char temp; for (i = 0; i < n/2; ++i) { temp = s[i]; s[i] = s[n - 1 - i]; s[n - 1 - i] = temp; } return; } /* Funkcija za "pretvaranje" cijelog broja n u string s = dekadski zapis tog broja. */ void f_itoa(int n, char s[]) { int i = 0, sign; /* Indeks, predznak. */ /* Zapamti predznak u sign i pretvori n u nenegativan broj. */ if ((sign = n) < 0) n = -n; /* Generiraj znamenke u obratnom poretku. */ do { s[i++] = n % 10 + '0'; /* Znamenka. */ } while ((n /= 10) > 0); /* Obrisi ju. */ /* Ako je broj negativan, stavi predznak. */ if (sign < 0) s[i++] = '-'; /* Dodaj minus na kraj. */ s[i] = '\0'; /* Kraj stringa. */ invertiraj(s); return; } int main(void) { int broj = -1234; char s[128]; /* String za zapis broja. */ /* Prvi primjer. */ printf("Broj: %d\n", broj); f_itoa(broj, s); printf("String: %s\n", s); /* Drugi primjer = najmanji prikazivi broj. */ broj = -2147483648; printf("Broj: %d\n", broj); f_itoa(broj, s); printf("String: %s\n", s); return 0; }