【发布时间】:2010-12-08 03:04:02
【问题描述】:
我想知道这是否是 concatenate 和 NUL 终止包括宽度在内的字符串的正确方法。
#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);
【问题讨论】:
-
为了维护目的,定义一个
snprintf和sprintf都使用的格式字符串可能是一个好主意。如果在一个地方而不是另一个地方改变它真的很糟糕! -
这听起来是个好主意,是否可以发布一个示例代码来参考这个?谢谢
-
只需声明
const char* fmt_str = "%-6s %-10s %4d %4f";之类的内容,并将其用作您在两个地方的格式字符串。
标签: c concatenation printf