是否有任何C标准函数将值“ 1”传递给所有(%s)

时间:2018-09-06 15:27:04

标签: c++ c

我只想知道是否有任何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"));

4 个答案:

答案 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)

不,标准中没有这样的东西。另外,请检查thisthis以获得更多信息。

您将不得不寻找一个可以做到这一点的图书馆。

例如,在C ++中,这可能会得到增强:

#include <boost/format.hpp>
int main ()
{
    std::cout << boost::format("%1%.%1%.%2%") % 12 % 2014 << '\n';
}

输出12.12.2014

答案 3 :(得分:0)

不!但是您可以使自己的函数接收数字字符串并将其放入%s ...