使用C中的空格格式化输出
发布时间:2020-12-16 09:51:41 所属栏目:百科 来源:网络整理
导读:让我假设我有一个带数值的变量,我想用10个字符打印它,如下所示:XXX XXXX XXX XXXX.因此,例如,数字10将被打印为000 0000 000 0010. 我最直接的方式是使用,例如: int value = 10;printf("%010D",value); 然而它显然产生: 0000000010 有没有人知道是否有任何
让我假设我有一个带数值的变量,我想用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 %.4sn",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 %04un",v3,v2,v1,v0); return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |