rprintf.c
来自「一个C源代码分析器」· C语言 代码 · 共 53 行
C
53 行
#include <stdio.h>#include <printf.h>#include <stdarg.h>/*@group*/typedef struct { char *name; } Widget;/*@end group*/int print_widget (FILE *stream, const struct printf_info *info, va_list *app){ Widget *w; char *buffer; int len; /* Format the output into a string. */ w = va_arg (*app, Widget *); len = asprintf (&buffer, "<Widget %p: %s>", w, w->name); if (len == -1) return -1; /* Pad to the minimum field width and print to the stream. */ len = fprintf (stream, "%*s", (info->left ? - info->width : info->width), buffer); /* Clean up and return. */ free (buffer); return len;}intmain (void){ /* Make a widget to print. */ Widget mywidget; mywidget.name = "mywidget"; /* Register the print function for widgets. */ register_printf_function ('W', print_widget, NULL); /* No arginfo. */ /* Now print the widget. */ printf ("|%W|\n", &mywidget); printf ("|%35W|\n", &mywidget); printf ("|%-35W|\n", &mywidget); return 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?