c函数返回格式化字符串

Zul*_*kis 8 c string printf

我想做这样的事情:

writeLog(printf("This is the error: %s", error));
Run Code Online (Sandbox Code Playgroud)

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

bma*_*ies 6

标准库中没有这样的功能,标准库中永远不会有这样的功能.

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

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


era*_*ran 6

鉴于不存在这样的函数,请考虑稍微不同的方法:使writeLog类似printf,即获取字符串和可变数量的参数.然后,让它在内部格式化消息.这将解决内存管理问题,并且不会破坏现有的使用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
}
Run Code Online (Sandbox Code Playgroud)