gpt4 book ai didi

c - 像 C 中的 printf 这样的函数参数

转载 作者:太空狗 更新时间:2023-10-29 15:49:01 25 4
gpt4 key购买 nike

我想实现一个函数 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() 覆盖函数”的一种相当常见的模式。

关于c - 像 C 中的 printf 这样的函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14766040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com