C中有没有办法传递printf()
我们想用作转换说明符的参数?一个小例子:
想象一下,我用./foo [-x]
如果-x
不存在,我希望它以十进制打印一些值。但如果-x
存在,我希望它以十六进制打印该值。
有没有办法将printf()
我们想要用作转换说明符的字符串作为参数传递,在这种情况下"x"
还是"%s"
?
--
注意:它不是像
char *format = "%s";
printf(format, "a string");
我正在寻找的。
C中有没有办法传递printf()
我们想用作转换说明符的参数?一个小例子:
想象一下,我用./foo [-x]
如果-x
不存在,我希望它以十进制打印一些值。但如果-x
存在,我希望它以十六进制打印该值。
有没有办法将printf()
我们想要用作转换说明符的字符串作为参数传递,在这种情况下"x"
还是"%s"
?
--
注意:它不是像
char *format = "%s";
printf(format, "a string");
我正在寻找的。
虽然 *printf() 系列函数确实提供了将字段宽度作为参数传递的方法,但实际的转换说明符本身必须在格式字符串中提供。因此,如果您的程序需要在 and 之间进行选择printf("%#X", integer)
,printf("%d", integer)
您要么必须以编程方式生成格式字符串(以与您在问题结束时明确拒绝的方式非常相似的方式),要么您需要对printf()
with进行两次不同的调用条件代码在它们之间进行选择。另一方面,对我来说,以编程方式生成格式字符串似乎并不麻烦,只要所有可能的不同输出格式使用相同数量的参数即可。