[英]Function arguments like printf in C
我想实现一个函数Myprintf()
,它接受像printf()
这样的参数。 现在我这样做:
sprintf(demoString, "Num=%d String=%s", num, str);
Myprintf(demoString);
我想将此函数调用替换为:
Myprintf("Num=%d String=%s", num, str);
这怎么可能?
#include <stdio.h>
#include <stdarg.h>
extern int Myprintf(const char *fmt, ...);
int Myprintf(const char *fmt, ...)
{
char buffer[4096];
va_list args;
va_start(args, fmt);
int rc = vsnprintf(buffer, sizeof(buffer), fmt, args);
va_end(args);
...print the formatted buffer...
return rc;
}
你的问题并不清楚输出是如何完成的; 您现有的Myprintf()
可能会将其输出到某个地方,可能使用fprintf()
。 如果是这种情况,您可以改为:
int Myprintf(const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
int rc = vfprintf(debug_fp, fmt, args);
va_end(args);
return rc;
}
如果您不想使用返回值,请将该函数声明为void
并且不要使用变量rc
。
这是' printf()
封面函数'的一种相当常见的模式。
printf
及其亲属属于一系列称为可变函数的函数 ,C标准库的<stddef.h>
头中有宏/函数来操作可变参数列表。 请查看GNU文档中的示例: 如何定义和使用变量函数 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.