【发布时间】:2015-07-20 17:27:51
【问题描述】:
说,如果我执行以下操作:
const char *strFmt = "Value=%d, str=%s, v=%I64d. Is 100%% true";
printf(strFmt, 1, "name", -1);
有没有一个函数可以简单地返回strFmt需要多少个参数而不填写它们?
【问题讨论】:
-
你可以数出未被另一个
%转义的%的数量。 -
@DanielA.White:我显然可以这样做......除了假设当前格式永远不会改变是不安全的。换句话说,谁能保证他们以后不会想出一个新的格式,比如
%%i?这就是为什么我一直在寻找一个内置函数来做到这一点...... -
@c00000fd:
%%i表示文字%后跟i。它的意义不能改变。如果您看到任何没有定义含义的转义,您可以做的是返回错误,因为这些是将来可以分配新含义的唯一形式(并且由于行为未定义,它们现在使用起来很危险)。 -
@DanielA.White 不完全:
"%*.*f"需要 3 个参数,而不是 1 个。
标签: c windows visual-studio