C 中有没有办法传递 printf()
一个我们想要用作转换说明符的参数?一个小例子:
想象一下我用 ./foo [-x] 调用我的程序
如果 -x
不存在,我希望它以十进制打印一些值。但如果 -x
存在,我希望它以十六进制打印该值。
有没有办法将 printf()
我们想要用作转换说明符的字符串作为参数传递,在本例中为 "x"
或 “%s”
?
--
注意:这不是这样的
char *format = "%s";
printf(format, "a string");
我正在寻找。
最佳答案
虽然 *printf() 系列函数确实提供了将字段宽度作为参数传递的方法,但实际的转换说明符本身必须在格式字符串中提供。因此,如果您的程序需要在 printf("%#X", integer)
和 printf("%d", integer)
之间进行选择,您要么必须以编程方式生成您的格式字符串(与您在问题末尾明确拒绝的方式非常相似),或者您需要使用条件代码对 printf()
进行两次不同的调用以在它们之间进行选择。另一方面,只要所有可能的不同输出格式使用相同数量的参数,以编程方式生成格式字符串对我来说似乎并不是非常繁重。
关于c - 将转换说明符作为参数传递给 printf(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17473655/