Сообщение от nahimovv
|
А в чём изюминка?
|
Я так понимаю, функция
EasyRider'а предназначена для вызова конструктором форматного вывода - она заполняет строку слева-направо. Хотя, конечно, отсутствие универсальности делает её немного неудобной. Если форматный вывод не нужен, то, действительно, удобнее заполнять справа-налево. И минимизировать количество вариантов за счет небольшого усложнения. Скажем, если не нужны отрицательные числа, м.б. бы сделать так:
Код:
|
#define WBUFSIZE 16
static char xtal[] = "0123456789ABCDEF";
static char buf [WBUFSIZE+1];
char *_int2str(uint val, uchar radix, uchar width)
{
char *s = &(buf[WBUFSIZE]);
uchar len = 0;
do {
*--s = xtal[val % radix];
++len;
} while (val /= radix);
while ( len++ ‹ width )
*--s = xtal[0];
return(s);
}
#define atoi(val) _int2str(val, 10, 0)
#define atox(val) _int2str(val, 0x10, 0)
#define ato...(val) _int2str(val, ...) |
________________