【问题标题】:Is there a "branching" string format descriptor?是否有“分支”字符串格式描述符?
【发布时间】:2023-03-24 03:42:01
【问题描述】:

我刚刚做了这个

printf( (n==0) ? " %d" : " %3d", n );

但是有条件格式描述符吗?

所以,这将意味着类似 “如果这是非常短的使用这样和这样的填充,但是,如果这是更长的使用这样和这样的填充。”

可以吗?

【问题讨论】:

  • 另一种方法是printf("%*d", (n==0) ? 0 : 3, n);

标签: c string-formatting


【解决方案1】:

没有条件,但您可以使用 * 来指定参数中的宽度。例如:

printf(" %*d", (n==0)?1:3, n);

【讨论】:

    【解决方案2】:

    您可以使用* 将字段宽度作为参数传递:

    printf("%*d", length, n);
    

    【讨论】:

      【解决方案3】:

      其他答案指出了字段宽度修饰符*

      由于您要比较零/非零来确定长度,您甚至可以将 n 的值转换为布尔值(10),然后将其乘以所需的长度:

      printf("%*d", !!n*3, n);
      

      【讨论】:

      • ...不过,如果您在任何“真实”代码库中执行此操作,请写下您要执行此操作的内容和原因的评论。
      猜你喜欢
      • 2014-02-14
      • 2021-12-02
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      • 2020-02-06
      • 2021-11-23
      相关资源
      最近更新 更多