2

C中有没有办法传递printf()我们想用作转换说明符的参数?一个小例子:

想象一下,我用./foo [-x]

如果-x不存在,我希望它以十进制打印一些值。但如果-x存在,我希望它以十六进制打印该值。

有没有办法将printf()我们想要用作转换说明符的字符串作为参数传递,在这种情况下"x"还是"%s"

--

注意:它不是像

char *format = "%s";
printf(format, "a string");

我正在寻找的。

4

1 回答 1

2

虽然 *printf() 系列函数确实提供了将字段宽度作为参数传递的方法,但实际的转换说明符本身必须在格式字符串中提供。因此,如果您的程序需要在 and 之间进行选择printf("%#X", integer)printf("%d", integer)您要么必须以编程方式生成格式字符串(以与您在问题结束时明确拒绝的方式非常相似的方式),要么您需要对printf()with进行两次不同的调用条件代码在它们之间进行选择。另一方面,对我来说,以编程方式生成格式字符串似乎并不麻烦,只要所有可能的不同输出格式使用相同数量的参数即可。

于 2013-07-04T23:19:41.910 回答