我只想知道是否有任何C(或C ++)标准函数将值“ 1”传递给所有(%s)。
sprintf(buffer, "record_id(%s)record_num(%s)record_val (%s"), "1"));
而不是像传递和复制“ 1”:
sprintf(query_buffer, "record_id(%s)record_num(%s)record_val (%s"), "1", "1", "1"));
答案 0 :(得分:4)
我认为您可以像这样格式化它;
sprintf( buffer, "record_id(%s)record_num(%1$s)record_val (%1$s"), "1") );
这是printf格式字符串的POSIX扩展。您可以使用n $指示列表中的第n个参数。
答案 1 :(得分:1)
否。
没有为此的C标准功能。 至于C ++(因为您说过cpp函数),我不确定,但我怀疑它是否存在。
答案 2 :(得分:0)
不,标准中没有这样的东西。另外,请检查this和this以获得更多信息。
您将不得不寻找一个可以做到这一点的图书馆。
例如,在C ++中,这可能会得到增强:
#include <boost/format.hpp>
int main ()
{
std::cout << boost::format("%1%.%1%.%2%") % 12 % 2014 << '\n';
}
输出12.12.2014
答案 3 :(得分:0)
不!但是您可以使自己的函数接收数字字符串并将其放入%s ...