[...]
Muszę napisać funkcję itoa, bo nie mam w bibliotece na maszynie gdzie
się odbędzie właściwa kompilacja. Na razie mam coś takiego znalezionego
w sieci i lekko przerobionego:
char *itoa(int value, char* result){
char *ptr = result, *ptr1 = result, tmp_char, *digits = "0123456789";
int tmp_value;
do{
tmp_value = value;
value /= 10;
*ptr++ = *(digits + tmp_value - value * 10);}
while (value);
*ptr-- = 0;
while(ptr1 < ptr){
tmp_char = *ptr;
*ptr--= *ptr1;
*ptr1++ = tmp_char;}
return result;
}
Kompilowane Borlandem na pececie jest lekko szybsze od 'wbudowanego'
itoa (0.9 sec. do 1.4 sec. dla iluś tam iteracji). Funkcja *nigdy* nie
dostanie liczby ujemnej i większej od 65535 i *zawsze* ma zwracać wynik
dziesiętnie. Odpada więc problem ze znakiem, ewentualny overflow i
zabawa z base.
Pytanie właściwe: jak to napisać żeby było szybsze.
--
Signature error: 0x00fe (0x00fe).