你不能在 C 中执行此操作(与其他语言(如 python)不同,它们具有内置的字符串格式%
运算符或str.format
功能)。
But由于您的方法看起来像您想要打印带有变量参数的格式化消息,因此您可以使用vfprintf
可以接受一个va_list
参数,这样您就可以将变量参数传输到内部函数。
#include <stdio.h>
#include <stdarg.h>
void enterString(const char *format,...)
{
va_list argptr;
va_start(argptr, format);
vfprintf(stdout, format, argptr);
va_end(argptr);
// rest of the processing here
}
int main()
{
enterString("My lucky number = %d", 11);
return 0;
}
相比之下,这并没有带来太多printf
,但现在你有了这个,
您可以添加对“详细”模式的检查、记录到文件、在消息之前打印前缀、日期等...
我在 musashi 680x0 模拟器中找到了这个确切的代码(在 m68kfpu.c 中)
static void fatalerror(char *format, ...) {
va_list ap;
va_start(ap,format);
vfprintf(stderr,format,ap);
va_end(ap);
exit(1);
}
(我必须纠正错误fprintf
这是在代码中,但除此之外,我们看到了一个直接的应用程序:该函数用于打印可变格式的错误消息,然后退出到操作系统)