注册 登录
查看: 742|回复: 3

[K60] 关于 printf (const char *fmt, ...) 函数

[复制链接]
发表于 2013-6-29 22:28:53 | 显示全部楼层 |阅读模式
  1. int printf (const char *fmt, ...)
  2. {
  3.     va_list ap;
  4.     int rvalue;
  5.     PRINTK_INFO info;


  6.     info.dest = DEST_CONSOLE;
  7.     info.func = &out_char;
  8.     /*
  9.      * Initialize the pointer to the variable length argument list.
  10.      */
  11.     va_start(ap, fmt);
  12.     rvalue = printk(&info, fmt, ap);
  13.     /*
  14.      * Cleanup the variable length argument list.
  15.      */
  16.     va_end(ap);
  17.     return rvalue;
  18. }


今天没事翻K60库的时候发现的,不知道是怎么实现的,主要是多个形参是怎么使用的。

还有这个函数
  1. int sprintf (char *s, const char *fmt, ...)
  2. {
  3.     va_list ap;
  4.     int rvalue = 0;
  5.     PRINTK_INFO info;

  6.     /*
  7.      * Initialize the pointer to the variable length argument list.
  8.      */
  9.     if (s != 0)
  10.     {
  11.         info.dest = DEST_STRING;
  12.         info.loc = s;
  13.         va_start(ap, fmt);
  14.         rvalue = printk(&info, fmt, ap);
  15.         *info.loc = '\0';
  16.         va_end(ap);
  17.     }
  18.     return rvalue;
  19. }

回复

使用道具 举报

发表于 2013-6-29 22:42:33 | 显示全部楼层
printf 和 sprintf  ,基本一样,只不过 sprintf 的第一个形参是配置输出的目的缓冲区,后面的都是一样的

建议你百度一下 C语言 可变长参数

回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-29 23:26:56 | 显示全部楼层
虚竹 发表于 2013-6-29 22:42
printf 和 sprintf  ,基本一样,只不过 sprintf 的第一个形参是配置输出的目的缓冲区,后面的都是一样的
...

嗯,知道了谢了
回复 支持 反对

使用道具 举报

发表于 2013-6-30 18:38:13 | 显示全部楼层
虚竹 发表于 2013-6-29 22:42
printf 和 sprintf  ,基本一样,只不过 sprintf 的第一个形参是配置输出的目的缓冲区,后面的都是一样的
...

漂亮~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回列表 返回顶部