gpt4 book ai didi

c - 如何在 C 中使用格式修饰符打印函数的返回值?

转载 作者:行者123 更新时间:2023-11-30 18:48:41 25 4
gpt4 key购买 nike

不知道这是否可行。我一直在寻找它,但什么也没找到。

我想要一个函数,合并多个值并将它们作为字符串文字返回(因此没有 malloc 和随后的 free)。这可以通过打印到返回值(如果有意义并且可能的话)来实现,或者可以使用 fprintf 将文字作为目标,而不是说 stdout,然后可以返回该文字。

下面函数的参数只是一个例子,还可以有其他类型,比如long等

#include <stdio.h>

char *format_and_return_literal(const char *s, int n, char c)
{
int m = 7;

//(1): Possible to fprintf to return value of function?
//fprintf(<func-return-literal>, "hello %s: %d %d %c", s, m, n, c);
//return <func-return-literal>;

// or

//(2): Possible to return string literal made of above parameters?
//return "hello %s: %d %d %c", s, m, n, c)
}

int main()
{
printf("%s\n", format_and_return_literal("foo", 33, 'M'));
return 0;
}
<小时/>

更新:谢谢大家。也许我使用的术语不是最正确的,但按照 @Davislor 使用静态缓冲区的建议,我实现了我想要的目标。我知道 snprintf 但无论如何还是谢谢你,@PeterJ。

char *format_and_return_literal(const char *s, int n, char c)
{
static char buf[1024];
int m = 7;

snprintf(buf, sizeof(buf), "hello %s: %d %d %c", s, m, n, c);

return buf;
}

最佳答案

您可以snprintf到固定大小的静态缓冲区并返回它。后续调用将覆盖之前的返回值。或者,传入调用者拥有的目标缓冲区。作为一个论点。

关于c - 如何在 C 中使用格式修饰符打印函数的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45069163/

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