如何使用要在C中打印的字符串有效地连接多个参数?

时间:2015-11-05 18:45:31

标签: c formatting printf string-formatting

我有一个调试系统,我希望使用带有代码编号的函数,使用printf在终端中打印。目前功能如下:

#define DEBUG(args...) general_printf(CMT_Common_Debug,args)

void general_printf(int messageCat, __const char *__restrict __format, ...)
{
    printf("[%d]",messageCat);

    printf(__format);
}

那么这个函数用什么来调用printf前面的格式为[code_here]的标识符代码。我面临的问题是,可能会发生某些事情,这会导致两次调用printf之间的时间过去,导致终端中的消息中断;这意味着我必须打电话给printf。不幸的是,加入这两个部分并不起作用:

printf("[%d]%s",messageCat,__format);

未填充%d,%u等。而且我无法找到如何将...传递给printf

我咨询了另一位开发人员,他建议以某种方式将数据复制到缓冲区,合并这两部分然后打印,但这需要太多的处理;我想要一种更直接的方法。

那我怎么能这样做?

修改

与可能的重复案例相比,我的问题并不完全独特,但即使是该线程也没有给出我需要的解决方案,即如何将int messageCat添加到同一个printf或类似函数的调用。

1 个答案:

答案 0 :(得分:0)

在搜索了所提到的函数和所提供的假设重复问题的链接之后,我设法找到了一种方法来做我想要的事情:

Objective-C

唯一的问题是它并不简单:它需要为一项本来应该很简单的任务做很多处理,因为它只是在{{{{{{{{{{ 1}}。在这种情况下,等待更好的解决方案。