8 static void _prtl10(
long num,
char *str);
9 static void _prtl8(
long num,
char *str);
10 static void _prtX16(
long num,
char *str);
11 static void _prtl16(
long num,
char *str);
12 static void _prtl2(
long num,
char *str);
23 int (*func)(
int,
int),
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);
260 for (i = 1; i <= 10; i++)
262 temp[i] = num % 10 +
'0';
265 for (i = 10; temp[i] ==
'0'; i--);
285 for (i = 1; i <= 11; i++)
287 temp[i] = (num & 07) +
'0';
291 for (i = 11; temp[i] ==
'0'; i--);
311 for (i = 1; i <= 8; i++)
313 temp[i] =
"0123456789abcdef"[num & 0x0F];
316 for (i = 8; temp[i] ==
'0'; i--);
336 for (i = 1; i <= 8; i++)
338 temp[i] =
"0123456789ABCDEF"[num & 0x0F];
341 for (i = 8; temp[i] ==
'0'; i--);
361 for (i = 1; i <= 32; i++)
363 temp[i] = ((num % 2) == 0) ?
'0' :
'1';
366 for (i = 32; temp[i] ==
'0'; 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)
void _fdoprnt(char *fmt, va_list ap, int(*func)(int, int), int farg)
#define va_arg(va, type)
可変長引数の値を返し、次の引数へ進む。 「va_start()とva_end()の間」もしくは「va_copy()とva_end()の間...
__builtin_va_list va_list
可変個の実引数を扱うための情報を保持するための型(__builtin_va_listはGCCに定義された型) ...
static void _prtl8(long num, char *str)