/* primer24.c - nverzija int <==> char * * atoi: K&R, 2.7; p. 43, itoa: K&R, 3.6, p.64; * Funkcije se nalaze u . * - atoi = konvertuje nisku karaktera s u ceo broj n; * - itoa = konvertuje broj n u nisku karaktera s */ #include #include int atoi( char [] ); void itoa( int, char []); main() { char s[10] = "4321"; int n; n = atoi( s ); printf("%d %s\n", n, s ); itoa( n, s ); printf("%d %s\n", n, s ); } int atoi( char *s ) { int i, n; /* ne radi sa znakom broja */ n = 0; for( i = 0; '0' <= s[i] && s[i] <= '9'; ++i ) n = n * 10 + (s[i] - '0'); return n; } void itoa( int n, char s[]) { int i, znak; if( (znak = n) < 0 ) n = - n; // zapamti znak i napravi n > 0 i = 0; do { // geerisanje cifara u obrnutom redosledu s[i++] = n % 10 + '0'; // uzima sledecu cifru } while ( (n /=10) > 0 ); // obrisi je if( znak == '-') s[i++] = '-'; s[ i ] = '\0'; s = strrev( s ); // strrev obrce nisku = reverse K&R, t.3.5 }