int vprintf(const char * format,va_list arg)......?

WillHunt 2001-06-12 11:10:00
unix环境下:
标准I/O库中有printf()函数的几种变体。

int vprintf(const char * format ,va_list arg);
int vfprintf(FILE *fp,const char *format ,va_list arg);
int vsprintf(char *buf,const char *format,va_list arg);

这组函数与标准的printf族的区别仅在于 可变参数表(...)变成了arg

标准printf族:
int printf(const char *format,...);
int fprintf(FILE *fp,const char *format,...);
int sprintf(char *buf,const char *format,...);

----------------------------------------------------
提问:
1.va_list 是什么数据类型?
2.vprinf()等三个函数如何使用?
...全文
153 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
风中老长 2001-06-12
  • 打赏
  • 举报
回复
fprintf(),一般是写文件(fopen缓冲型文件系统)或者打印等。
写打印机:
fprintf(stdprn,"I don't know!");
sprintf(),是写字符串。
char ch[80];
sprintf(ch,"I don't know!");
vprintf(),vsprintf(),vfprintf()分别等效于printf(),sprintf(),fprintf();只是他们的参数表有一个指向参数表的指针代替。这个指针必须是一个va_list型指针,
main()
{
print_message("I don't ^s","know");
}

print_massage(char * format)
{
va_list ptr;
va_start(ptr,format);
vprintf(format,ptr);
va_end(ptr);
}
holyfire 2001-06-12
  • 打赏
  • 举报
回复
typedef void _FAR *va_list;

...是可变参数
例子

#include <stdio.h>
#include <stdarg.h>

/* calculate sum of a 0 terminated list */
void sum(char *msg, ...)
{
int total = 0;
va_list ap;
int arg;
va_start(ap, msg);
while ((arg = va_arg(ap,int)) != 0) {
total += arg;
}
printf(msg, total);
va_end(ap);
}

int main(void) {
sum("The total of 1+2+3+4 is %d\n", 1,2,3,4,0);
return 0;
}
风中老长 2001-06-12
  • 打赏
  • 举报
回复
跟着斑竹走真累呀

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧