C ++,vsprintf使用更改的参数数量和大格式字符串

时间:2014-05-15 18:27:23

标签: c++ printf

我需要在文件中打印各种格式字符串。我将使用与每个字符串相关联的整数,与每个字符串中的格式说明符相同的整数数。大多数字符串都没有相同数量的格式说明符/整数。

因此给出了blah blah blah %d something else blah %hd blah blah blah %02hd blah %d行的格式字符串 和一个包含四个需要在这个语句中出现的整数的参数列表,将vsprintf并行地通过参数列表和格式语句,将第一个列表项放在第一个说明符中,第二个项放在第二个说明符中, 等等等等。或者它会通过列表将所有项目放在第一个说明符处吗?

换句话说,以下两个陈述是等价的吗?

sprintf(buffer,"blah blah blah %d something else blah %hd blah blah blah %02hd blah %d",a1,a2,a3,a4)

vsprintf(buffer,"blah blah blah %d something else blah %hd blah blah blah %02hd blah %d", args)
vsprintf args中的

将是va_listva_list args;

1 个答案:

答案 0 :(得分:1)

  

vsprintf并行地通过参数列表和格式语句,将第一个列表项放在第一个说明符中,将第二个项放在第二个说明符中,[等等]

是的,这是它将产生的结果。

  

或者它会通过列表将所有项目放在第一个说明符处吗?

没有。 vsprintf如果这样做的话就不会有用。