printf()函数中 ,水平制表符,空格的个数
Posted 青儿哥哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了printf()函数中 ,水平制表符,空格的个数相关的知识,希望对你有一定的参考价值。
在控制台输出数据的时候,也就是用printf()的时候,我们经常用\\t来控制对齐,以使输出的结果更加整齐美观。
然而有时候我们发现及时使用了\\t 也会出现数据对不齐的情况,这就跟\\t究竟对应几个空格有关系。
先给出程序和运行结果,再进行解释。
代码:
#include <stdio.h> #include <stdlib.h> int main(int argc,char* argv) { printf("123456\\t123\\t45\\n"); printf("12\\t123456\\t78\\n"); printf("---------------------------------------\\n"); printf("1234567\\t123\\t45\\n"); printf("12\\t123456\\t78\\n"); printf("---------------------------------------\\n"); printf("12345678\\t123\\t45\\n"); printf("12\\t123456\\t78\\n"); printf("---------------------------------------\\n"); printf("123456789\\t123\\t45\\n"); printf("12\\t123456\\t78\\n"); printf("---------------------------------------\\n"); printf("123456781234\\t123\\t45\\n"); printf("12\\t123456\\t78\\n"); return 0; }
运行结果:
可以看到,出现了数据不能对其的情况。我们发现\\t对应的空格的次数是不固定的,并不是我们所认为的4个空格或8个空格。
那么有什么规律呢。给个简单的公式 :
令 num = |n-8|%8, 其中n表示\\t前面的字符占的位置(前面的字符也可能是转换说明,如%d,%10d等)。
那么\\t对应的空格的个数 spaceNum,有
所以我们看到当\\t前面为123456时,后面有两个空格;当\\t前面为1234567时,后面有1个空格,而当前面正好为12345678时,后面跟8个空格
当前面为123456781234时,后面的空格数量为 |12-8|%8=4
以上是关于printf()函数中 ,水平制表符,空格的个数的主要内容,如果未能解决你的问题,请参考以下文章
去除空格,水平制表符:CHAR换行符:CHAR(10)回车符:CHAR(13)