Article View: pl.comp.lang.c
Article #1160Re: itoa() pod Linuxem?
From: Michal Malecki
Date: Fri, 06 Feb 1998 16:38
Date: Fri, 06 Feb 1998 16:38
70 lines
2641 bytes
2641 bytes
Krzysztof Goworek <krzys@enpol.gliwice.pl> wrote:
: a jesli nie chce nic wymuszac ?
Niech ci bedzie.
: a jezeli nie chce nic konwertowac ?
A jezeli nie rozumiesz, co mialem na mysli ?
Chodzilo mi o to, ze itoa nie uzyjesz do przekonwertowania na tekst liczb
typow float i double. Dlatego wlasnie, ze itoa zamieni ci je na calkowite.
A jezeli wlasnie nie chcesz nic konwertowac, to sorry wodzu, ale musisz uzyc
sprintf.
: wydaje mi sie, ze jest to calkiem dobra funkcja, a na pewno duzo szybsza
: niz sprintf.
Duzo to nie. Ale jest szybsza. Dlatego np. zaleca sie uzywac zamiast printf
z jednym argumentem puts.
Przykladowo, fragment sprintf moglby wygladac tak:
if ( *pformat == '%' )
{
switch ( *++pformat )
{
...
case '%':
*target++ = '%';
break;
case 'd':
intval = va_arg( ap, int );
target = fill_dec( target, intval );
break;
...
}
...
}
Natomiast w itoa masz krocej:
target = fill_dec( target, intval );
*target = 0;
return target;
Moze autorzy stwierdzili, ze nie ma sensu pisac takiej funckji.
Albo nie pomysleli o udostepnieniu funkcji (ktora nazwalem tutaj "fill_dec").
Ewentualnie nie ma tam wcale wywolania takiej funkcji. Wcale by mnie to nie
dziwilo, na intuicje bowiem biorac, funkcja sprintf jest podstawa wsyzstkich
xprintf. To znaczy, ze printf moze w zasadzie wygladac tak:
int printf( const char* format, ... );
{
char buf [ MAX_STRING ];
int retval;
va_list* ap;
va_start( ap, format );
retval = sprintf( buf, ap );
puts( buf );
return retval;
}
I wcale by mnie to nie dziwilo. Zwlaszcza, ze to jest i/o buforowane.
--
.---. . . - Michal Malecki <mmalecki@technologist.com>/The things that
\___ ,-. | , |- ,-. ,- mUd: zly.mud.org.pl 4000. /can't destroy you
\ |-' |< | | | | uRl: www.kis.p.lodz.pl/~sektor /make you
`---' `-' ' ` `' `-' ' pGp: sektor@zly.kis.p.lodz.pl /stronger...
Technical Details
Message-ID:
<6bfear$q2g@polonez.man.lodz.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!uw.edu.pl!ict.pwr.wroc.pl!news.man.lodz.pl!not-for-mailReferences:
<34D5D087.494F5105@spam.suxx.l0cked.delta.com.pl> <34D5D79C.2FD3@imm.org.pl> <6bafn0$l86@polonez.man.lodz.pl> <6bbqrs$l9d$1@info.nask.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!uw.edu.pl!ict.pwr.wroc.pl!news.man.lodz.pl!not-for-mail From: Michal Malecki <sektor@zly.kis.p.lodz.pl> Newsgroups: pl.comp.lang.c Subject: Re: itoa() pod Linuxem? Date: 6 Feb 1998 16:38:51 GMT Lines: 70 Message-ID: <6bfear$q2g@polonez.man.lodz.pl> References: <34D5D087.494F5105@spam.suxx.l0cked.delta.com.pl> <34D5D79C.2FD3@imm.org.pl> <6bafn0$l86@polonez.man.lodz.pl> <6bbqrs$l9d$1@info.nask.pl> NNTP-Posting-Host: sektor@zly.kis.p.lodz.pl User-Agent: tin/pre-1.4-980105 (UNIX) (SunOS/5.5.1 (i86pc)) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit