小明思考

高性能服务器端计算
posts - 64, comments - 325, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

printf的wrapper

Posted on 2007-10-12 14:13 小明 阅读(1355) 评论(0)  编辑 收藏 引用 所属分类: C/C++

有个朋友问到我为什么下面的代码会打印出来乱码

 1 #include <stdio.h>
 2 #include <stdarg.h>
 3 
 4 void myprint(char* format, )
 5 {    
 6     va_list mark;    
 7     va_start(mark, format);    
 8     printf(format, mark); //应该被替换成vprintf
 9     va_end(mark);
10 }
11 int main()
12 {
13     myprint("hello %s\n","abcd");
14     return 0;
15 }
16 

问题就出现在第8行的printf的使用上,这里实际上应该使用vprintf

printf和vprintf的定义:

int printf( const char *format ,... );
int vprintf(   const char* format, va_list argptr);

可以看出printf是接受可变参数的函数,而vprintf是一个接受一个va_list为参数的非可变参数的函数。
两者很不同。


标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
相关链接:
网站导航: