【问题标题】:C format specifierC 格式说明符
【发布时间】:2010-02-08 11:13:50
【问题描述】:

当我工作时,在代码中的某个地方我看到了以下语句。 我对sprintf中的格式说明符感到困惑@

   d_number = strtol( tmp_buf , (char **)NULL, 16);
   memset( tmp_buf , ' ' , sizeof( tmp_buf ) );
   sprintf( tmp_buf , "%0.*d" , (int)sizeof( dec_number ) , d_number  );

谁能解释一下?

【问题讨论】:

  • @qrdl:这对您有帮助吗?您可能错过了备忘录,但 SO 从未打算作为与 Google 的简单链接。它旨在包含大大小小的编程问题的答案。如果您没有任何有用的贡献,请不要发表评论。
  • @jalf 第一个点击是维基百科关于 printf 的文章,它列出了所有格式说明符和宽度参数。我希望这能回答您关于我的评论是否有用的问题。我坚信查找信息的能力是优秀程序员(就像任何工程师一样)的最强品质之一,所以我更愿意给鱼竿,而不是鱼。我以成为程序员为荣,不喜欢贬低我手艺的人。是的,请确保我得到该备忘录的另一份副本,Lumbergh 先生。
  • @qdrl:确实如此。您的评论没有帮助。 SO 的既定目标之一是提供答案而不告诉人们用谷歌搜索它。但是告诉我,如果人们去 stackoverflow.com 并输入“printf 格式说明符”为什么会“降低你的手艺”,但如果他们去谷歌或维基百科并做 exact i> 同样的事情?我想说一个好的程序员的标志是去一个相关的站点寻找信息。对于编程问题,SO 是一个比维基百科更相关的网站,不是吗?
  • 如果这个问题已经在 SO 上提出过,那么一定要发布一个链接,并告诉 OP 在提问之前先下车搜索网站。但如果这里没有被问到,为什么不应该呢?引用常见问题解答,“没有问题太琐碎或太“新手””。那么为什么寻找有关 printf 格式说明符信息的人不能在此站点上找到答案呢?
  • @jalf 像 OP 这样的人一旦发现 SO,他们就会停止花时间学习东西,因为使用 SO 的集体智慧要容易得多。一方面,我从不回答这样的问题,因为它闻起来像业力嫖娼。请告诉我——我们为什么不在这里解决家庭作业?懒得解决作业的人和懒得自己学东西的人有什么区别?你真的认为这些人不会贬低我们的手艺吗?

标签: c format-specifiers


【解决方案1】:

.* 表示精度未在格式字符串中指定,而是作为必须格式化的参数之前的附加整数值参数。 (d_number)

http://www.cplusplus.com/reference/clibrary/cstdio/printf/

【讨论】:

    【解决方案2】:

    * 替换为 (int)sizeof(dec_number)。如果 dec_number 是 int,在许多机器上它与 %0.4d 相同。这是打印整数或最大位数的精度

    *可以出现在“.”的两边,例如:

    sprintf(tmp_buf, "%*.*", 0, (int)sizeof(dec_number), d_number);
    

    也可以。

    【讨论】:

      猜你喜欢
      • 2013-02-13
      • 1970-01-01
      • 1970-01-01
      • 2018-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多