在c中连接字符串和snprintf

时间:2010-12-08 03:04:02

标签: c concatenation printf

我想知道这是concatenateNUL终止字符串(包括宽度)的正确方法。

#define FOO "foo"
const char *bar = "bar";
int n = 10;
float f = 10.2;

char *s;
int l;

l = snprintf (NULL, 0, "%-6s %-10s %4d %4f",FOO, bar, n, f);
s = malloc (l + 4); // should it be the number of formats tags?
if (s == null) return 1;
sprintf (s, "%-6s %-10s %4d %4f", FOO, bar, n, f);

2 个答案:

答案 0 :(得分:1)

相当多的系统在其标准C库中都有一个函数asprintf,它完全按照您的操作执行:allocate和sprintf

答案 1 :(得分:0)

您只需要将1添加到snprintf()返回的值,因为只添加了一个空终止符。

但是,您需要检查l == -1(表示snprintf()失败)。