📄 stdarg.c
字号:
#include <stdarg.h>
struct node { int a[4]; } x = {1,2,3,4};
print(char *fmt, ...);
main() {
print("test 1\n");
print("test %s\n", "2");
print("test %d%c", 3, '\n');
print("%s%s %w%c", "te", "st", 4, '\n');
print("%s%s %f%c", "te", "st", 5.0, '\n');
print("%b %b %b %b %b %b\n", x, x, x, x, x, x);
return 0;
}
print(char *fmt, ...) {
va_list ap;
va_start(ap, fmt);
for (; *fmt; fmt++)
if (*fmt == '%')
switch (*++fmt) {
case 'b': {
struct node x = va_arg(ap, struct node);
printf("{%d %d %d %d}", x.a[0], x.a[1], x.a[2], x.a[3]);
break;
}
case 'c':
printf("%c", va_arg(ap, char));
break;
case 'd':
printf("%d", va_arg(ap, int));
break;
case 'w':
printf("%x", va_arg(ap, short));
break;
case 's':
printf("%s", va_arg(ap, char *));
break;
case 'f':
printf("%f", va_arg(ap, double));
break;
default:
printf("%c", *fmt);
break;
}
else
printf("%c", *fmt);
va_end(ap);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -