c函数返回格式化字符串

我想做这样的事情:

writeLog(printf("This is the error: %s", error)); 

所以我正在寻找一个返回格式化字符串的函数。

如果不存在这样的函数,请考虑稍微不同的方法:使writeLog print,即获取字符串和可变数量的参数。 然后,让它在内部格式化消息。 这将解决内存管理问题,并且不会破坏writeLog现有用途。

如果您发现这可能,您可以使用以下内容:

 void writeLog(const char* format, ...) { char msg[100]; va_list args; va_start(args, format); vsnprintf(msg, sizeof(msg), format, args); // do check return value va_end(args); // write msg to the log } 

标准库中没有这样的function,标准库中永远不会有这样的function。

如果你想要一个,你可以自己写。 以下是您需要考虑的事项:

  1. 谁将为返回的字符串分配存储空间?
  2. 谁将为返回的字符串释放存储空间?
  3. 它是否是线程安全的?
  4. 是否会对返回的字符串的最大长度进行限制?