我正在使用snprintf将一个字符串连接到一个字符数组:
char buf[20] = "";
snprintf(buf, sizeof buf, "%s%s", buf, "foo");
printf("%s\n", buf);
snprintf(buf, sizeof buf, "%s%s", buf, " bar");
printf("%s\n", buf);
问题在于第二个将"bar"
连接到buf
的操作,而不是将其添加到"foo"
后面。输出结果如下:foo
bar
第一个%s
应该保持buf
(在这种情况下它保存了"foo"
)。而第二个%s
应该附加"bar"
。对吗?
我做错了什么?
std::string
。当然,这并不能解决你关于 C 部分的问题。 - paxdiabloc ++
标签。 - Ben Voigtstd::string
的+=
运算符(或append
函数)进行字符串连接。他们不会知道任何关于snprintf
的东西,肯定不会推荐使用它。C和C++之间有很多差异,特别是对于字符串和标准算法等方面。在提问时请打上相应的标签以获取您想要的答案! - Cody Gray