c - 将转换说明符作为参数传递给 printf()

标签 c formatting printf

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/

相关文章:

c - 数组值不更新

c - 用 C 语言构建模块化库

c - 如何为双指针分配内存并且它应该在 f1、f2 和 f3 中可见?

c - 在链表开头插入节点

c++ - 代码格式化会导致目标文件内容发生变化吗?

Java - 格式化多个数组输出

C 在csv文件中写入1024行后的数据

c - 字符数组的 strlen 和大小

datetime - VB6 日期数据类型 : precision and formatting

c - 为什么下面的程序给出输出 :A