printf()函數中\t,水平製表符,空格的個數

在控制檯輸出數據的時候,也就是用printf()的時候,咱們常常用\t來控制對齊,以使輸出的結果更加整齊美觀。spa

然而有時候咱們發現及時使用了\t 也會出現數據對不齊的狀況,這就跟\t究竟對應幾個空格有關係。code

先給出程序和運行結果,再進行解釋。blog

代碼:io

#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;
}

運行結果:class

能夠看到,出現了數據不能對其的狀況。咱們發現\t對應的空格的次數是不固定的,並非咱們所認爲的4個空格或8個空格。bfc

那麼有什麼規律呢。給個簡單的公式  :gc

令  num = |n-8|%8, 其中n表示\t前面的字符佔的位置(前面的字符也多是轉換說明,如%d,%10d等)。程序

那麼\t對應的空格的個數 spaceNum,有im

因此咱們看到當\t前面爲123456時,後面有兩個空格;當\t前面爲1234567時,後面有1個空格,而當前面正好爲12345678時,後面跟8個空格數據

當前面爲123456781234時,後面的空格數量爲  |12-8|%8=4

相關文章
相關標籤/搜索