switch (*fmt) {
case 'c':
if (!(flags & LEFT)) {
while (--field_width > 0) {
*str++ = ' ';
}
}
*str++ = (unsigned char) va_arg(args, int);
while (--field_width > 0) {
*str++ = ' ';
}
break;
case 's':
s = va_arg(args, char *);
len = strlen(s);
if (precision < 0) {
precision = len;
} else if (len > precision) {
len = precision;
}
if (!(flags & LEFT)) {
while (len < field_width--) {
*str++ = ' ';
}
}
for (i = 0; i < len; ++i) {
*str++ = *s++;
}
while (len < field_width--) {
*str++ = ' ';
}
break;
case 'o':
str = number(str,
va_arg(args, unsigned long),
8,
field_width,
precision,
flags);
break;
case 'p':
if (field_width == -1) {
field_width = 8;
flags |= ZEROPAD;
}
str = number(str,
(unsigned long) va_arg(args, void *),
16,
field_width,
precision,
flags);
break;
case 'x':
flags |= SMALL;
case 'X':
str = number(str,
va_arg(args, unsigned long),
16,
field_width,
precision,
flags);
break;
我的学习之旅(20)vsprintf.c
最新推荐文章于 2020-09-27 23:55:14 发布