有没有在C的方式来传递printf()
我们要为转换指定使用的参数?一个小例子:传递一个转换符作为参数传递给printf()
想象我打电话给我的方案与./foo [-x]
如果-x
不存在,我希望它打印在十进制一定的价值。但是,如果-x
存在,我希望它以十六进制打印该值。
有没有办法通过printf()
我们想用作转换说明符的字符串作为参数,在这种情况下是"x"
或"%s"
?
-
注意:它不是像
char *format = "%s";
printf(format, "a string");
,我要找的。
如果你的目标是有东西相当于这个假设'的printf( “%8升@ \ n”,(xflag “X”: “d”),3141592L?);其中'@'用在这里'表明转换说明符被指定为单独的参数,那么答案是“否”。你不得不创造适当的格式字符串:'的printf((xflag“%.8lX”:“%.8ld”),3141592L?);',你的“它不是像”的评论表示您不希望但我在这里的评论说:“你必须这样做,或者使用你自己设计的东西,而不是'printf()'函数族”。 –
@JonathanLeffler谢谢你的回复。我只是好奇,如果printf()有这种能力;) –