rprintf.c.texi

来自「一个C源代码分析器」· TEXI 代码 · 共 53 行

TEXI
53
字号
#include <stdio.h>#include <printf.h>#include <stdarg.h>@grouptypedef struct  @{    char *name;  @} Widget;@end groupint print_widget (FILE *stream, const struct printf_info *info, va_list *app)@{  Widget *w;  char *buffer;  int len;  /* @r{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;  /* @r{Pad to the minimum field width and print to the stream.} */  len = fprintf (stream, "%*s",                 (info->left ? - info->width : info->width),                 buffer);  /* @r{Clean up and return.} */  free (buffer);  return len;@}intmain (void)@{  /* @r{Make a widget to print.} */  Widget mywidget;  mywidget.name = "mywidget";  /* @r{Register the print function for widgets.} */  register_printf_function ('W', print_widget, NULL); /* @r{No arginfo.} */  /* @r{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 + -
显示快捷键?