[ dado_k @ 18.02.2006. 12:26 ] @
kako da iz nekog broja izvučem 5 znamenku npr broj je 513648
a peta znamenka je 4. Ne zanima mene sad 5. znamenka to je samo primjer zanima me kako svaku znamenku. RIJEŠENJA KOJA NISU PO ANSI STANDARDU NE DOLAZE U OBZIR. Ja sam pokušao da konvertiram broj u string pa onda da sa char[ i ] dobijem van određen broj no atoi ne spada u standard pa onda mi to i ne radi... možda postoji koja druga f-ja za to?

[Ovu poruku je menjao dado_k dana 18.02.2006. u 13:27 GMT+1]
[ dado_k @ 18.02.2006. 12:33 ] @
ma riješeno sa %
jbg opće sam zaboravio na to...
[ D3adly @ 19.02.2006. 17:43 ] @
atoi nije u standardu , ali sprintf jest.

Code:

sprintf (broj_str, "%d", broj);
[ NrmMyth @ 19.02.2006. 19:07 ] @
Odakle ti to?
Citat:
atof <math.h> and <stdlib.h> ANSI, Win 98, Win Me, Win NT, Win 2000, Win XP
atoi <stdlib.h> ANSI, Win 98, Win Me, Win NT, Win 2000, Win XP
atol <stdlib.h> ANSI, Win 98, Win Me, Win NT, Win 2000, Win XP

Vjerojatno mislis na ltoa, i itoa koji ne postoje u standardu.
[ chupcko @ 21.02.2006. 12:04 ] @
A sto lepo ne delis sa 10 nekoliko puta i onda uzmes ostatak pri deljenju sa 10 :).

Malo je neuobicajno da se cifre broje sa leve strane, ali ajde. Ako ti brojevi uvek imaju istu duzinu onda ces lako to da uradis :).

E sada, hoces brzo sa memorijom, ili sporo bez memorije ili ....

Za 100 E cu da ti napravim koju god zelis verziju :)))) .

Sto se tice standarda :)

Code:

ATOI(3)                    Linux Programmer's Manual                   ATOI(3)

NAME
       atoi, atol, atoll, atoq - convert a string to an integer

SYNOPSIS
       #include <stdlib.h>

       int atoi(const char *nptr);
       long atol(const char *nptr);
       long long atoll(const char *nptr);
       long long atoq(const char *nptr);

DESCRIPTION
       The  atoi() function converts the initial portion of the string pointed
       to by nptr to int.  The behaviour is the same as

              strtol(nptr, (char **)NULL, 10);

       except that atoi() does not detect errors.

       The atol() and atoll() functions behave the same as atoi(), except that
       they  convert the initial portion of the string to their return type of
       long or long long.  atoq() is an obsolete name for atoll().

RETURN VALUE
       The converted value.

CONFORMING TO
       SVID 3, POSIX.1, BSD 4.3, ISO/IEC 9899.  ISO/IEC  9899:1990  (C89)  and
       POSIX.1  (1996  edition)  include the functions atoi() and atol() only;
       C99 adds the function atoll().

NOTES
       The non-standard atoq() function is not present in libc 4.6.27 or glibc
       2, but is present in libc5 and libc 4.7 (though only as an inline func-
       tion in <stdlib.h> until libc 5.4.44).  The atoll() function is present
       in glibc 2 since version 2.0.2, but not in libc4 or libc5.

SEE ALSO
       atof(3), strtod(3), strtol(3), strtoul(3)

GNU                               2000-12-17                           ATOI(3)

[ X Files @ 21.02.2006. 17:41 ] @
atoi() postoji jos od vremena kada sam koristio AztecC i LatticeC kompajlere
na Amiga 500 racunarima.

Stvarno nisam gledao standard, ali verujem da to jeste po standardu.
[ dado_k @ 21.02.2006. 20:53 ] @
ma zamjenio atoi i itoa mislim dobro mislio krivo napisao
@chupcko
reko sam da sam riješio sa % to sam mislio baš kao što si ti rekao....
[ chupcko @ 21.02.2006. 23:04 ] @
Eh, nikada necu zaraditi pare :). Ajde za domaci napisi formulu koja jednim izrazom izvlaci n-tu cifru :).

Hint: linkuje se sa -lm.

Mislim sumnjam da ce iko tako to raditi, ali je lepo za igranje :).
[ dado_k @ 22.02.2006. 14:23 ] @
u jednom izrazu?
npr

broj/(pow(10,(n-1)))%10
to sam sad napisal nabrzinu nisam sprobal možda je glupost... :D
[ chupcko @ 22.02.2006. 15:47 ] @
Da da, to je :) Nekada u FORTRANU lepo radilo :).

Da li ima jos neka funkcija , hm, i ova je lepa :). A kako bi izracunao duzinu broja isto jednim izrazom :).
[ idb @ 22.02.2006. 16:45 ] @
Code:
int length = 1+(int)log10((i>0)?i:1);

ili ako si siguran da je i iz "bezbednog" opsega vrednosti

Code:
int length = 1+(int)log10(i);


[Ovu poruku je menjao idb dana 22.02.2006. u 17:54 GMT+1]

[Ovu poruku je menjao idb dana 22.02.2006. u 17:55 GMT+1]
[ chupcko @ 23.02.2006. 08:50 ] @
Eto cisto u navali raznih string resenja, cisto da se ljudi podsete kako se to isto moze uraditi, naravno moze da se sada izracuna efikasnost.

Ajde jel neko ima jos neku blesavu ideju racunanja broja cifara. Evo meni pada jedna bas blesava: da se otvori temp file, i ispise u njega broj :).
E sada ako ste ocekivali da sa fseek i ftell odredim velicinu fajla ili da pak na neki drugi nacin ... necu, setite se fprintf vraca broj ispisanih karaktera :).

Naravno ajde jos jedno resenje, sprintf u neki string, isto vraca broj ispisanih karaktera :).

Eto, sezona lova na otkaceni kod je otvorena :)