#include <stdio.h>
#include <string.h>
#include <stdarg.h>
void my_printf(const char *fmt, ...)
{
va_list ap;
char c;
while ((c = *fmt++) != '\0') {
if (c == '%') {
if ((c = *fmt++) == '\0') {
break;
}
switch(c) {
case 's': {
const char *s
= va_arg(ap
, const char *); break;
}
case 'c': {
const char x
= (char) va_arg(ap
, int); break;
}
case '%':
break;
case 'x': /* ... */; break;
case 'z': /* ... */; break;
}
} else {
}
}
}
int main(void)
{
my_printf("%s%c", "Hello, world", '\n');
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGFyZy5oPgoKdm9pZCBteV9wcmludGYoY29uc3QgY2hhciAqZm10LCAuLi4pCnsKICAgIHZhX2xpc3QgYXA7CiAgICB2YV9zdGFydChhcCwgZm10KTsKICAgIGNoYXIgYzsKICAgIHdoaWxlICgoYyA9ICAqZm10KyspICE9ICdcMCcpIHsKICAgICAgICBpZiAoYyA9PSAnJScpIHsKICAgICAgICAgICAgaWYgKChjID0gKmZtdCsrKSA9PSAnXDAnKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBzd2l0Y2goYykgewogICAgICAgICAgICAgICAgY2FzZSAncyc6IHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzID0gdmFfYXJnKGFwLCBjb25zdCBjaGFyICopOwogICAgICAgICAgICAgICAgICAgIGZ3cml0ZShzLCAxLCBzdHJsZW4ocyksIHN0ZG91dCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjYXNlICdjJzogewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgeCA9IChjaGFyKSB2YV9hcmcoYXAsIGludCk7CiAgICAgICAgICAgICAgICAgICAgcHV0Y2hhcih4KTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNhc2UgJyUnOgogICAgICAgICAgICAgICAgICAgIHB1dGNoYXIoJyUnKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ3gnOiAvKiAuLi4gKi87IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAneic6IC8qIC4uLiAqLzsgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OiBwdXRjaGFyKGMpOyBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHB1dGNoYXIoYyk7CiAgICAgICAgfQogICAgfQogICAgdmFfZW5kKGFwKTsKfQoKaW50IG1haW4odm9pZCkKewogICAgbXlfcHJpbnRmKCIlcyVjIiwgIkhlbGxvLCB3b3JsZCIsICdcbicpOwp9