Go to the source code of this file.
|
void | _fdoprnt (char *fmt, va_list ap, int(*func)(int, int), int farg) |
|
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
◆ _fdoprnt()
void _fdoprnt |
( |
char * |
fmt, |
|
|
va_list |
ap, |
|
|
int(*)(int, int) |
func, |
|
|
int |
farg |
|
) |
| |
Definition at line 20 of file fdoprnt.c.
References _prtl10(), _prtl16(), _prtl2(), _prtl8(), _prtX16(), MAXSTR, NULL, and va_arg.
Referenced by sprintf().
46 while ((c = *fmt++) !=
'%')
57 (*func) (farg, *fmt++);
61 if ((leftjust = ((*fmt ==
'-')) ? 1 : 0))
66 fill = (*fmt ==
'0') ? *fmt++ :
' ';
78 while (
'0' <= *fmt && *fmt <=
'9')
80 fmin = fmin * 10 + *fmt++ -
'0';
94 while (
'0' <= *fmt && *fmt <=
'9')
96 fmax = fmax * 10 + *fmt++ -
'0';
102 if ((f = *fmt++) ==
'\0')
112 string[0] =
va_arg(ap,
int);
189 for (length = 0; str[length] !=
'\0'; length++)
192 if (fmin >
MAXSTR || fmin < 0)
196 if (fmax >
MAXSTR || fmax < 0)
201 if (fmax != 0 || fmin != 0)
212 leading = fmin - length;
219 if (sign ==
'-' && fill ==
'0')
221 (*func) (farg, sign);
225 for (i = 0; i < leading; i++)
227 (*func) (farg, fill);
230 if (sign ==
'-' && fill ==
' ')
232 (*func) (farg, sign);
234 for (i = 0; i < length; i++)
236 (*func) (farg, str[i]);
240 for (i = 0; i < leading; i++)
241 (*func) (farg, fill);
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 _prtl8(long num, char *str)
◆ _prtl10()
static void _prtl10 |
( |
long |
num, |
|
|
char * |
str |
|
) |
| |
|
static |
Definition at line 251 of file fdoprnt.c.
Referenced by _fdoprnt().
260 for (i = 1; i <= 10; i++)
262 temp[i] = num % 10 +
'0';
265 for (i = 10; temp[i] ==
'0'; i--);
◆ _prtl16()
static void _prtl16 |
( |
long |
num, |
|
|
char * |
str |
|
) |
| |
|
static |
Definition at line 302 of file fdoprnt.c.
Referenced by _fdoprnt().
311 for (i = 1; i <= 8; i++)
313 temp[i] =
"0123456789abcdef"[num & 0x0F];
316 for (i = 8; temp[i] ==
'0'; i--);
◆ _prtl2()
static void _prtl2 |
( |
long |
num, |
|
|
char * |
str |
|
) |
| |
|
static |
Definition at line 352 of file fdoprnt.c.
Referenced by _fdoprnt().
361 for (i = 1; i <= 32; i++)
363 temp[i] = ((num % 2) == 0) ?
'0' :
'1';
366 for (i = 32; temp[i] ==
'0'; i--);
◆ _prtl8()
static void _prtl8 |
( |
long |
num, |
|
|
char * |
str |
|
) |
| |
|
static |
Definition at line 276 of file fdoprnt.c.
Referenced by _fdoprnt().
285 for (i = 1; i <= 11; i++)
287 temp[i] = (num & 07) +
'0';
291 for (i = 11; temp[i] ==
'0'; i--);
◆ _prtX16()
static void _prtX16 |
( |
long |
num, |
|
|
char * |
str |
|
) |
| |
|
static |
Definition at line 327 of file fdoprnt.c.
Referenced by _fdoprnt().
336 for (i = 1; i <= 8; i++)
338 temp[i] =
"0123456789ABCDEF"[num & 0x0F];
341 for (i = 8; temp[i] ==
'0'; i--);