🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #1160

Re: itoa() pod Linuxem?

#1160
From: Michal Malecki
Date: Fri, 06 Feb 1998 16:38
70 lines
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-mail
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>

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