gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 23:30:14 24 4
gpt4 key购买 nike

在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com