Go to the source code of this file.
|
void | _doprnt (char *fmt, va_list ap, int(*func)(int)) |
|
static void | _prtdbl (double num, int precision, char *str) |
|
static void | _prtl10 (long num, char *str) |
|
static void | _prtl16 (long num, char *str) |
|
static void | _prtl2 (long num, char *str) |
|
static void | _prtl8 (long num, char *str) |
|
static void | _prtX16 (long num, char *str) |
|
◆ MAXSTR
◆ NULL
◆ PRECISION
◆ _doprnt()
void _doprnt |
( |
char * |
fmt, |
|
|
va_list |
ap, |
|
|
int(*)(int) |
func |
|
) |
| |
Definition at line 22 of file doprnt.c.
References _prtdbl(), _prtl10(), _prtl16(), _prtl2(), _prtl8(), _prtX16(), MAXSTR, NULL, PRECISION, and va_arg.
48 while ((c = *fmt++) !=
'%')
63 if ((leftjust = ((*fmt ==
'-')) ? 1 : 0))
68 fill = (*fmt ==
'0') ? *fmt++ :
' ';
80 while (
'0' <= *fmt && *fmt <=
'9')
82 fmin = fmin * 10 + *fmt++ -
'0';
96 while (
'0' <= *fmt && *fmt <=
'9')
98 fmax = fmax * 10 + *fmt++ -
'0';
104 if ((f = *fmt++) ==
'\0')
114 string[0] =
va_arg(ap,
int);
141 darg =
va_arg(ap,
double);
224 for (length = 0; str[length] !=
'\0'; length++)
227 if (fmin >
MAXSTR || fmin < 0)
231 if (fmax >
MAXSTR || fmax < 0)
236 if (fmax != 0 || fmin != 0)
247 leading = fmin - length;
254 if (sign ==
'-' && fill ==
'0')
260 for (i = 0; i < leading; i++)
265 if (sign ==
'-' && fill ==
' ')
269 for (i = 0; i < length; i++)
275 for (i = 0; i < leading; i++)
static void _prtl2(long num, char *str)
static void _prtl10(long num, char *str)
static void _prtX16(long num, char *str)
static void _prtl16(long num, char *str)
#define va_arg(va, type)
可変長引数の値を返し、次の引数へ進む。 「va_start()とva_end()の間」もしくは「va_copy()とva_end()の間...
static void _prtdbl(double num, int precision, char *str)
static void _prtl8(long num, char *str)
◆ _prtdbl()
static void _prtdbl |
( |
double |
num, |
|
|
int |
precision, |
|
|
char * |
str |
|
) |
| |
|
static |
Definition at line 413 of file doprnt.c.
References _prtl10().
Referenced by _doprnt().
422 for(i = 0, mp = 1; i < precision; i++, mp *= 10);
424 num = ((num<0) ? -(num) : (num));
426 p = (long)(num * mp) - (long)(w * mp);
429 while(*str !=
'\0') { str++; }
static void _prtl10(long num, char *str)
◆ _prtl10()
static void _prtl10 |
( |
long |
num, |
|
|
char * |
str |
|
) |
| |
|
static |
Definition at line 286 of file doprnt.c.
Referenced by _doprnt(), and _prtdbl().
295 temp[1] = ((num<0) ? -(num%10) : (num%10)) +
'0';
296 num /= (num<0) ? -10 : 10;
297 for (i = 2; i <= 10; i++) {
298 temp[i] = num % 10 +
'0';
301 for (i = 10; temp[i] ==
'0'; i--);
◆ _prtl16()
static void _prtl16 |
( |
long |
num, |
|
|
char * |
str |
|
) |
| |
|
static |
Definition at line 338 of file doprnt.c.
Referenced by _doprnt().
347 for (i = 1; i <= 8; i++)
349 temp[i] =
"0123456789abcdef"[num & 0x0F];
352 for (i = 8; temp[i] ==
'0'; i--);
◆ _prtl2()
static void _prtl2 |
( |
long |
num, |
|
|
char * |
str |
|
) |
| |
|
static |
Definition at line 388 of file doprnt.c.
Referenced by _doprnt().
397 for (i = 1; i <= 32; i++)
399 temp[i] = ((num % 2) == 0) ?
'0' :
'1';
402 for (i = 32; temp[i] ==
'0'; i--);
◆ _prtl8()
static void _prtl8 |
( |
long |
num, |
|
|
char * |
str |
|
) |
| |
|
static |
Definition at line 312 of file doprnt.c.
Referenced by _doprnt().
321 for (i = 1; i <= 11; i++)
323 temp[i] = (num & 07) +
'0';
327 for (i = 11; temp[i] ==
'0'; i--);
◆ _prtX16()
static void _prtX16 |
( |
long |
num, |
|
|
char * |
str |
|
) |
| |
|
static |
Definition at line 363 of file doprnt.c.
Referenced by _doprnt().
372 for (i = 1; i <= 8; i++)
374 temp[i] =
"0123456789ABCDEF"[num & 0x0F];
377 for (i = 8; temp[i] ==
'0'; i--);