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


在控制台輸出數據的時候,也就是用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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM