使用C中的空格格式化输出

让我假设我有一个带数值的变量,我想用10个字符打印它,如下所示:XXX XXXX XXX XXXX.因此,例如,数字10将被打印为000 0000 000 0010.

我最直接的方式是使用,例如:

int value = 10;

printf("%010D",value);

然而它显然产生:

0000000010

有没有人知道是否有任何可以输出的内置函数

000 0000 000 0010

或者有必要实施一个

提前致谢

解决方法

首先请注意,32位int的最大值为2,147,483,647.因此,14位数字是不可能的(除了至少4个前导零).你需要一个64位长的long来获得14个非零数字.

没有简单的库调用允许它,但实现这一点并不难.一种方法是使用整数数学拆分值.另一种是通过拆分字符串:

int main(void) {

  long long int value = 12345678901234;

  // by string splitting...
  char buf[32];
  sprintf(buf,"%014lld",value);
  printf("%.3s %.4s %.3s %.4s\n",buf,buf + 3,buf + 7,buf + 10);

  // by integer modular arithmetic...
  unsigned v0 = (unsigned)(value % 10000);
  value /= 10000;
  unsigned v1 = (unsigned)(value % 1000);
  value /= 1000;
  unsigned v2 = (unsigned)(value % 10000);
  value /= 10000;
  unsigned v3 = (unsigned)value;
  printf("%03u %04u %03u %04u\n",v3,v2,v1,v0);

  return 0;
}

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...